【问题标题】:Python WebCrawling urllib.error.URLError: <urlopen error Temporary failure in name resolution>Python WebCrawling urllib.error.URLError: <urlopen error 名称解析中的临时失败>
【发布时间】:2018-09-18 00:29:39
【问题描述】:

我正在从网络上抓取一些数据,由于我应该获取的数据非常庞大,因此我同时收到了 500 多个请求(通过urllib.request.urlopen(url) 通过multiprocessing 汇集)。

这里的问题是抛出如下错误:

urllib.error.URLError: urlopen 错误名称暂时失败 分辨率

经过一番研究,我发现这个问题是由于请求过多时无法关闭连接造成的。但是还没有找到解决这个问题的方法。

我应该将同时连接限制在某个安全范围内,还是更改urllib 请求配置?

开发环境:

  • Ubuntu 16.04
  • Python 3.6

【问题讨论】:

    标签: python web-crawler urllib


    【解决方案1】:

    尝试使用 requests 库中的 Session Objects 如文档中所述,

    Session 对象允许您跨请求保留某些参数。它还在从 Session 实例发出的所有请求中保留 cookie,并将使用 urllib3 的连接池。因此,如果您向同一主机发出多个请求,则会重用底层 TCP 连接,从而显着提高性能(请参阅 HTTP 持久连接)。

    也许这个关于高效网络抓取的其他thread 可以帮助你。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-03-24
      • 2018-12-04
      • 2021-12-06
      • 2020-08-22
      • 1970-01-01
      • 2017-10-04
      • 1970-01-01
      相关资源
      最近更新 更多