当前位置:   article > 正文

【Wikipedia爬虫工具包的使用】请求超时、代理错误、SSLError_caused by proxyerror('cannot connect to proxy.', r

caused by proxyerror('cannot connect to proxy.', remotedisconnected('remote

项目场景:

https://github.com/goldsmith/Wikipedia

使用该工具包爬取维基百科的搜索内容


问题描述

TimeoutError;urllib3.exceptions.NewConnectionError;requests.exceptions.ConnectionError;requests.exceptions.ProxyError

case1:Failed to establish a new connection: [WinError 10060] 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。

case2:Failed to establish a new connection: [WinError 10061] 由于目标计算机积极拒绝,无法连接。

case3:Caused by ProxyError(‘Cannot connect to proxy.’, RemoteDisconnected(‘Remote end closed connection without response’))。


尝试:

1.使用v2ray开启代理,尝试多个节点均请求失败(使用proxies = { #ip: port },开启或关闭v2ray代理服务均失败。浏览器搜IP地址显示的非真实地址)。
2.尝试了利用my_fake_useragent更换随机UA,没有变化。
3.设置verify=False也没有变化。
4.设置’Connection’: 'close’也没有变化。
5.更换url为http://baidu.com,可以请求但因为网页内容问题无法返回json格式数据。

// proxies, verify=False
proxies = {
    'http': 'xxx.xx.xxx.xxx:xxxxx', 'https': 'xxx.xx.xxx.xxx:xxxxx',
  }
  
  r = requests.get(API_URL, params=params, headers=headers, proxies=proxies, verify=False)
  
//my_fake_useragent
  import my_fake_useragent as ua
  USER_AGENT = ua.UserAgent().random()
  
//'Connection': 'close'
headers = {
    'User-Agent': USER_AGENT,
    'Connection': 'close'
  }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

解决方案:

更换clash开启代理(不用proxies, 只使用clash开启代理服务即可。浏览器搜ip地址显示的是真实地址)

出现 Caused by SSLError(SSLError(1, '[SSL: KRB5_S_TKT_NYV] unexpected eof while…错误。
代码中注释提示 # This branch is for urllib3 v1.22 and later.
将urllib3换成1.21版本,成功运行。

verify=False时会有警告InsecureRequestWarning: Unverified HTTPS request is being made. Adding certificate verification is strongly advised. 删掉verify=False,警告消失。
取消之前尝试的修改(‘Connection’: 'close’和my_fake_useragent更换随机UA),也可以成功运行。

//均为工具包中原始代码
API_URL = 'http://en.wikipedia.org/w/api.php'
USER_AGENT = 'wikipedia (https://github.com/goldsmith/Wikipedia/)'

          ......

headers = {
    'User-Agent': USER_AGENT
  }
r = requests.get(API_URL, params=params, headers=headers)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

总结

使用该工具包,无需对wikipedia.py进行修改。开启合适的代理即可。

在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/175720
推荐阅读
相关标签
  

闽ICP备14008679号