|
|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
代码如下,使用requests库的简陋爬虫
问题描述:当跑代码爬图时,不定时会发生 response爬到了源码,但是之后用正则表达式时,找不到图片地址,导致后续列表操作超出范围而报错。例如有时候 爬到第15张会报错 但再次运行 又可能是在爬取第13张时候报错,甚至再次运行,第3张图的时候就已经报错了。
尝试百度无果,百思不得其解,遂请各位大佬赐教
- import random
- import requests
- import re
- list1=['Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_8; en-us) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50','Mozilla/5.0 (Windows; U; Windows NT 6.1; en-us) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50','Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0;','Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0)','Opera/9.80 (Macintosh; Intel Mac OS X 10.6.8; U; en) Presto/2.8.131 Version/11.11','Opera/9.80 (Windows NT 6.1; U; en) Presto/2.8.131 Version/11.11','Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_3_3 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8J2 Safari/6533.18.5']
- def ua():
- return {'User-Agent':random.choice(list1),'Referer':'https://www.mzitu.com/'}
- def delx(a):
- a[0]=a[0][1:-1]
- a[1]=a[1][1:-1]
- for i in range(1,66):
- url='https://www.mzitu.com/205723/'+str(i)
- response=requests.get(url,headers=ua()).text
- d=re.findall("img src=(.*) alt="'(.*)'" width",response)
- image_infos=list(d[0])
- delx(image_infos)
- image_content=requests.get(image_infos[0],headers=ua()).content
- with open("image/"+str(i)+'.jpg','wb') as f:
- f.write(image_content)
复制代码
我试了一下,'User-Agent' 是 'Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_3_3 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8J2 Safari/6533.18.5'时,会导致那个图片没有width,但是如果去掉width,可能会有一些其他的图片,所以我建议去掉这个'User-Agent'
|
|