[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()
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

江前云后

文章结束的标识:打赏链接

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值