Python 请求多线程 "Max Retries exceeded with url" 由<类"socket.gaierror"引起>



我正试图同时下载一堆带有请求模块和python内置多处理库的url。当我将两者结合使用时,我会遇到一些看起来绝对不对的错误。我用100个线程发送了100个请求,通常其中50个以成功告终,而其他50个则收到以下消息:

   TTPConnectionPool(host='www.reuters.com', port=80): Max retries exceeded with url: 
/video/2013/10/07/breakingviews-batistas-costly-bluster?videoId=274054858&feedType=VideoRSS&feedName=Business&videoChannel=5&utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+reuters%2FUSVideoBusiness+%28Video+%2F+US+%2F+Business%29 (Caused by <class 'socket.gaierror'>: [Errno 8] nodename nor servname provided, or not known)

最大重试次数和未提供的节点名行看起来都不正确。

这是我的请求设置:

import requests
req_kwargs = {
  'headers' : {'User-Agent': 'np/0.0.1'},
  'timeout' : 7,
  'allow_redirects' : True
}
# I left out the multiprocessing code but that part isn't important
resp = requests.get(some_url, req_kwargs**)

有人知道如何防止或至少在调试过程中采取进一步措施吗?

谢谢。

我认为这可能是由于网站不允许的高访问频率造成的。

尝试以下操作:

  • 只需使用较低的访问频率对该网站进行爬网,当您再次收到相同的错误时,请在web浏览器中访问该网站,查看该网站是否已禁止蜘蛛
  • 使用代理池对网站进行爬网,以防止网站认为你的访问频率很高并禁止你的蜘蛛
  • 丰富您的http请求标头,使其像web浏览器发出的一样

[Erno 8]节点名或服务名称未提供,或未知

只是意味着它无法解决www.reuters.com将ip解析放置在主机文件或域中

相关内容

最新更新