Selenium headless browser webdriver [Errno 104] Connection reset by peer
Selenium headless browser webdriver [Errno 104] Connection reset by peer
我正在尝试从以下 URL 中抓取数据。但是当 driver.get(url)
时 selenium 会失败 有时错误是 [Errno 104] Connection reset by peer
,有时是 [Errno 111] Connection refused
。 在极少数情况下,它工作得很好,而在我的 mac 和真实浏览器上,同一个蜘蛛每次都工作得很好。所以这与我的 spider
.
无关
已经尝试了许多解决方案,例如等待页面上的选择器、隐式等待、使用 selenium-requests 传递正确的请求 headers 等。但似乎没有任何效果。
http://www.snapdeal.com/offers/deal-of-the-day
https://paytm.com/shop/g/paytm-home/exclusive-discount-deals
我正在使用 python
、selenium
和 headless Firefox webdriver
来实现这一点。 os 是 centos 6.5
。
注意:我有很多 AJAX
重页面被成功抓取,有些在下面。
http://www.infibeam.com/deal-of-the-day.html, http://www.amazon.in/gp/goldbox/ref=nav_topnav_deals
已经花了很多天时间尝试调试问题,但没有成功。任何帮助将不胜感激。
折腾了好几天,终于找到原因了。写在这里是为了社区的利益。无头浏览器由于服务器上缺少 RAM
而失败,来自 webdriver
的奇怪错误消息是真实的 pita
.
服务器 运行 直接运行 60
天没有重启,重启就成功了。在将交换增加 3 倍之后,过去几天没有遇到问题。还安排了一项任务来清理页面文件缓存 (http://www.yourownlinux.com/2013/10/how-to-free-up-release-unused-cached-memory-in-linux.html)。
我使用 Selenium 和 chromedriver (python3) 进行抓取已有一段时间了。在最新的 Google Chrome 更新中,我不得不处理两个问题。
1) webdriver 启动时出错:
解决方案:我必须添加 "no-sandbox" 参数。
chrome_options.add_argument('--无沙盒')
2) [Errno 104] 连接被对等方重置:
解决方案。套接字和http请求似乎有问题。网页内容太大,或者您没有给页面足够的时间来加载。至少那是我的想法。
我将最大页面加载时间设置为 60 秒,它似乎工作正常。
driver.set_page_load_timeout(60)
我在网络驱动程序初始化之间添加了一个小延迟,这似乎也有帮助。
time.sleep(0.5)
在查找类似错误时发现了这个问题。
看起来像是 selenium 3.8.1 和 3.9.0 的错误。
https://github.com/SeleniumHQ/selenium/issues/5296
降级到 3.8.0 解决了这个问题
我正在尝试从以下 URL 中抓取数据。但是当 driver.get(url)
时 selenium 会失败 有时错误是 [Errno 104] Connection reset by peer
,有时是 [Errno 111] Connection refused
。 在极少数情况下,它工作得很好,而在我的 mac 和真实浏览器上,同一个蜘蛛每次都工作得很好。所以这与我的 spider
.
已经尝试了许多解决方案,例如等待页面上的选择器、隐式等待、使用 selenium-requests 传递正确的请求 headers 等。但似乎没有任何效果。
http://www.snapdeal.com/offers/deal-of-the-day
https://paytm.com/shop/g/paytm-home/exclusive-discount-deals
我正在使用 python
、selenium
和 headless Firefox webdriver
来实现这一点。 os 是 centos 6.5
。
注意:我有很多 AJAX
重页面被成功抓取,有些在下面。
http://www.infibeam.com/deal-of-the-day.html, http://www.amazon.in/gp/goldbox/ref=nav_topnav_deals
已经花了很多天时间尝试调试问题,但没有成功。任何帮助将不胜感激。
折腾了好几天,终于找到原因了。写在这里是为了社区的利益。无头浏览器由于服务器上缺少 RAM
而失败,来自 webdriver
的奇怪错误消息是真实的 pita
.
服务器 运行 直接运行 60
天没有重启,重启就成功了。在将交换增加 3 倍之后,过去几天没有遇到问题。还安排了一项任务来清理页面文件缓存 (http://www.yourownlinux.com/2013/10/how-to-free-up-release-unused-cached-memory-in-linux.html)。
我使用 Selenium 和 chromedriver (python3) 进行抓取已有一段时间了。在最新的 Google Chrome 更新中,我不得不处理两个问题。
1) webdriver 启动时出错:
解决方案:我必须添加 "no-sandbox" 参数。
chrome_options.add_argument('--无沙盒')
2) [Errno 104] 连接被对等方重置:
解决方案。套接字和http请求似乎有问题。网页内容太大,或者您没有给页面足够的时间来加载。至少那是我的想法。 我将最大页面加载时间设置为 60 秒,它似乎工作正常。
driver.set_page_load_timeout(60)
我在网络驱动程序初始化之间添加了一个小延迟,这似乎也有帮助。
time.sleep(0.5)
在查找类似错误时发现了这个问题。 看起来像是 selenium 3.8.1 和 3.9.0 的错误。
https://github.com/SeleniumHQ/selenium/issues/5296
降级到 3.8.0 解决了这个问题