出现问题描述及分析:
最近做爬虫是,经常出现ConnectionResetError: [WinError 10054] 等错误,主要是因为使用urlopen方法太过频繁,引起远程主机的怀疑,被网站认定为是攻击行为,导致urlopen()后,request.read()一直卡死在那里,导致最后抛出10054异常。
具体解决办法:
1、设置sleep()等待一段时间后继续下面的操作【简单常用】
import time
time.sleep(t)
2、在request后面写入一个关闭的操作
response.close()
3、设置socket默认的等待时间,在read超时后能自动往下继续跑
socket.setdefaulttimeout(t_default)
4、防止循环时某一个请求失败导致循环退出,从而程序退出【常用】
抛出异常,保存日志或者重新请求,或者加请求超时。=
try:
html = requests.get(pic, headers=Hostreferer, timeout=15)
print('成功')
except requests.exceptions.RequestException as e:
print(e)
print('失败')
continue
具体例子:
1、使用Python爬取妹子网的图片,批量下载,附带源码,超详细
2、爬虫实例源码下载,修改目录直接能运行
更多内容参考:
Python爬虫学习汇总(持续更新)