Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python请求多线程;超过url“的最大重试次数”;由<;类别';套接字错误'&燃气轮机;_Python_Multithreading_Python Requests - Fatal编程技术网

Python请求多线程;超过url“的最大重试次数”;由<;类别';套接字错误'&燃气轮机;

Python请求多线程;超过url“的最大重试次数”;由<;类别';套接字错误'&燃气轮机;,python,multithreading,python-requests,Python,Multithreading,Python Requests,我正试图通过requests模块和python内置的多处理库同时下载一组url。当将两者结合使用时,我遇到了一些错误,这些错误看起来绝对不正确。我用100个线程发送了100个请求,其中50个线程通常以成功结束,而另50个线程则收到以下消息: TTPConnectionPool(host='www.reuters.com', port=80): Max retries exceeded with url: /video/2013/10/07/breakingviews-batistas-c

我正试图通过requests模块和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)
有人知道如何防止或至少在调试过程中更进一步吗


谢谢。

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

请尝试以下操作:

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

[Errno 8]提供了节点名或服务名,或未知

只是暗示它无法解析www.reuters.com
请将ip解析放在主机文件或域中

谢谢您的建议。我很快就给你打分!如何通过请求库使用python中的代理池。在线帮助有点不清楚。再次感谢@LucasOu Yang,您必须实现自己的代理池,因为没有这样成熟的项目。我写了一篇简单的文章,用它来爬网一个限制访问频率的网站。如果您对此感兴趣,可以修改
settings.yaml
文件以添加站点,包括代理以及从此类站点获取代理的规则。之后,
Readme.md
文件告诉我们一种使用代理池建立代理服务器的简单方法。希望能有帮助。嘿!你搞清楚代理池的事了吗?显然,我在bing.com上达到了最大请求量。任何帮助都将不胜感激!
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**)