【问题标题】:Selenium headless browser webdriver [Errno 104] Connection reset by peerSelenium 无头浏览器 webdriver [Errno 104] 连接被对等方重置
【发布时间】:2015-09-01 09:30:29
【问题描述】:

我正在尝试从以下 URL 中抓取数据。但是当driver.get(url) 时,selenium 会失败,有时错误是[Errno 104] Connection reset by peer,有时是[Errno 111] Connection refused在极少数情况下它工作得很好,在我的带有真正浏览器的 mac 上,同一个蜘蛛每次都能正常工作。所以这与我的spider 无关。

尝试了许多解决方案,例如在页面上等待选择器、隐式等待、使用 selenium-requests 来传递正确的请求标头等。但似乎没有任何效果。

http://www.snapdeal.com/offers/deal-of-the-day
https://paytm.com/shop/g/paytm-home/exclusive-discount-deals

我正在使用pythonseleniumheadless Firefox webdriver 来实现这一点。操作系统是centos 6.5

注意:我有很多 AJAX 被成功抓取的重页,下面是一些。

http://www.infibeam.com/deal-of-the-day.html, http://www.amazon.in/gp/goldbox/ref=nav_topnav_deals

已经花了很多天试图调试这个问题,但没有成功。任何帮助将不胜感激。

【问题讨论】:

    标签: python selenium selenium-webdriver httplib centos6.5


    【解决方案1】:

    在这个问题上折腾了几天,终于找到了原因。写在这里是为了社区的利益。由于服务器上缺少 RAM 而导致无头浏览器失败,来自 webdriver 的奇怪错误消息是真实的 pita

    服务器在没有重启的情况下直接运行60 天,重启它就可以了。将swap增加3倍后,这几天没有遇到问题。还安排了清理页面文件缓存的任务 (http://www.yourownlinux.com/2013/10/how-to-free-up-release-unused-cached-memory-in-linux.html)。

    【讨论】:

      【解决方案2】:

      在寻找类似错误时发现了这个问题。 看起来像是 selenium 3.8.1 和 3.9.0 的 bug。

      https://github.com/SeleniumHQ/selenium/issues/5296

      降级到 3.8.0 解决了这个问题

      【讨论】:

      • 谢谢!看起来它一旦降级就可以工作了。希望它会表现相同:)
      【解决方案3】:

      一段时间以来,我一直在使用 Selenium 和 chromedriver (python3) 进行抓取。使用最新的 Google Chrome 更新,我不得不处理两个问题。

      1) webdriver 启动出错:

      解决方案:我必须添加“无沙盒”参数。

      chrome_options.add_argument('--no-sandbox')

      2) [Errno 104] 对等方重置连接:

      解决方案。套接字和http请求似乎有问题。网页内容太大,或者您没有给页面足够的时间来加载。至少我是这么想的。 我将最大页面加载时间设置为 60 秒,它似乎工作正常。

      driver.set_page_load_timeout(60)

      我在 webdrivers 初始化之间添加了一个小延迟,这似乎也有帮助。

      time.sleep(0.5)

      【讨论】:

      • 您的意思是“--no-sandbox”吗?还是应该没有前面的两个连字符?
      猜你喜欢
      • 2016-10-10
      • 2014-01-04
      • 1970-01-01
      • 1970-01-01
      • 2016-03-03
      • 2018-05-22
      • 2021-08-27
      • 1970-01-01
      • 2023-01-12
      相关资源
      最近更新 更多