python 网络爬虫问题
来源:互联网 发布:中世纪手机游戏知乎 编辑:程序博客网 时间:2024/06/08 03:37
运行环境为python3.4
遇到的问题:第一个,通过gethtml(url)返回的是一个字节数组,而正则表达式编译后返回的是一个字符串。findall()函数需要两个参数都是一致的类型。因此由两种解决方式。第一种解决方式是将正则表达式编译成字节码,即 req=b'(http:[^\s]*?\.jpg)';第二种解决方式是将字节字符转换为字符串,即str(字节数组)
第二个问题:正则表达式问题。这点没想通。在python2.0以上的通过使用req=r'src="(.*?\.jpg) "'即可,但在3.0以上则匹配不到任何东西,得使用 req=r'(http:[^\s]*?\.jpg)'这样的形式,欢迎大家指教
第三个问题:通过使用这样的正则表达式,匹配上的字符串包括这两种形式http://www.237.cc/7330jianyue/5332_4.html","pic_url":"http://www.237.cc/uploads/pcline/568_15_1920x1200.jpg', '
http://cdn.t02.pic.sogou.com/ac75323d6b6de243-503c0c74be6ae02f-3913db5c868f40d94849122717709501_i.jpg',
第一种形式的字符串不能直接通过urllib.request.urlretrieve函数解索出来,必须取这个里面的url地址,比较笨拙的办法就是先定位http的位置,在取出该http
import re
#import fileimport struct
import urllib.request
def gethtml(url):#获得指定url上的所有文件
page=urllib.request.urlopen(url)
html=page.read()
print(type(html))
return html
def getImg(html):#获得该网页上所有的照片
#req=r'src="(.*?\.jpg) width"'
# req=r'(http:[^\s]*?jpg)'
req=r'(http:[^\s]*?\.jpg)'
#req=r'([^\s]*?jpg) width'
imgre=re.compile(req)
imglist=re.findall(imgre,str(html))
print(imglist)
print(type(imglist))
x=0
for i in imglist:
if "pic_url" not in i:
print(i)
urllib.request.urlretrieve(i,'%s.jpg'%x)#下载图片
x+=1
else:
nPos =i.index("pic_url")
sStr1 = i[nPos+10:]
print(sStr1)
urllib.request.urlretrieve(sStr1,'%s.jpg'%x)
x+=1
0 0
- python 网络爬虫问题
- python 中文乱码问题 网络爬虫
- python 网络爬虫代码
- Python实现网络爬虫
- Python实现网络爬虫
- Python实现网络爬虫
- python实现网络爬虫
- python网络爬虫
- python实现网络爬虫
- Python 网络爬虫
- python网络爬虫
- python 网络爬虫 北京公交
- [Python] 实现网络爬虫
- python实现网络爬虫
- Python]网络爬虫
- Python实现网络爬虫
- python 网络爬虫
- [Python] 实现网络爬虫
- 第15周 项目3-玩指针(2)
- 第十五周项目oj
- 2015
- 第十五周项目三OJ题目(3)
- iOS中app图标圆角半径
- python 网络爬虫问题
- 第15周项目1
- 十五周项目二 2
- atoi与itoa代码实现
- 理解堆栈及其利用方法
- 学习使用炫酷的 Facebook Pop (二)
- 计数符号 n 总是不能执行加一语句的
- The selected device specifies an unsupported architecture 解决办法
- 如何把SecureCRT合并在一起