[python爬虫]使用urllib函数urlretrieve报错[socket error][Errno 10054]
为了练手,使用爬虫爬一个“你懂得”图床的,使用的是urlretrieve函数,不但速度慢,还总是会报错,不是open的timeout就是上面提到的socket error。
在网上找了许多办法诸如请求中加入headers、在调用urllib2.Request.urlopen().read()后需要调用close()等方法并未奏效。
由于不想麻烦scrapy等库,所以发现了个简单粗暴的办法:
直接使用urllib自带的open函数打开数据流,再以二进制写入文件保存:
参考代码段:其中注释为原来被替换掉的方法
# urlretrieve速度慢不稳定
# urllib.urlretrieve(i, path +‘%s.jpg‘ % ImgNum)
urlopen = urllib.URLopener()
#下载图片流
fp = urlopen.open(imageUrl)
data = fp.read()
#清除并以二进制写入
f = open(path + ‘1.jpg‘ , ‘w+b‘)
f.write(data)
f.close()
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。