笔者在anaconda python 环境下,用spyder编写的程序,在爬取链家二手房源信息时遇到类似以下问题:
ConnectionError: HTTPSConnectionPool(host='dg.lianjia.com', port=443): Max retries exceeded with url: /ershoufang/105102021037.html (Caused by NewConnectionError('<urllib3.connection.VerifiedHTTPSConnection object at 0x00000245237E0160>: Failed to establish a new connection: [WinError 10060] 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。'))
于是有以下尝试: (似乎。。。有所改善)
1.将下列请求头部信息加入代码中:
headers={'Connection':'close'}
2.同时加入如下代码,
#设置重连次数
requests.adapters.DEFAULT_RETRIES = 5
'''
#设置连接活跃状态为False
s = requests.session()
s.keep_alive = False
'''
以上代码中备注部分不执行,似乎影响不大。
当然最好的方法是在代码中加入异常处理!并记录下相关标签信息,一段时间后再次尝试连接!
另外,如遇到SSLError问题则按以下方式处理即可解决问题。
以下为转载部分
不要使用verify=False
或者requests.packages.urllib3.disable_warnings()
不要忽视警告
正确的做法参考文档资料
https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings
https://urllib3.readthedocs.io/en/latest/user-guide.html#ssl
http://blog.csdn.net/zahuopuboss/article/details/52964809
只要安装相关requests依赖包就可以解决此问题:
pip install cryptography
pip install pyOpenSSL
pip install certifi
使用Anaconda同理
;