我正在从Web上抓取一些数据,由于我应该获取的数据量很大,所以我同时收到了500多个请求(通过urllib.request.urlopen(url)
通过合并通过multiprocessing
发出)。
这里的问题是引发以下错误:
urllib.error.URLError:urlopen错误名称中的临时失败
解析度
经过研究后,我发现此问题是由于存在太多请求而无法关闭连接这一事实引起的。但是尚未找到任何解决方法。
我应该将同时连接限制在某个安全范围内,还是更改urllib
请求配置?
开发环境:
Ubuntu 16.04
Python 3.6
最佳答案
尝试从请求库中使用Session Objects。如文档中所述,
通过Session对象,您可以在请求中保留某些参数。它还会在所有通过Session实例发出的请求中保留cookie,并将使用urllib3的连接池。因此,如果您要向同一主机发出多个请求,则基础TCP连接将被重用,这可能会导致性能显着提高(请参阅HTTP持久连接)。
也许有关高效Web抓取的其他thread可以帮助您。
关于python - Python WebCrawling urllib.error.URLError:<urlopen错误名称解析中的临时失败>,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49718857/