Selenium headless浏览器webdriver [Errno 104]连接由同行重置

时间:2015-09-01 09:30:29

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

我正在尝试从以下网址中抓取数据。但driver.get(url)有时候错误为[Errno 104] Connection reset by peer,有时[Errno 111] Connection refused,硒会失败。 在极少数情况下它可以正常工作并且在我的Mac上使用真正的浏览器,同一个蜘蛛每次都可以正常工作。所以这与我的spider无关。

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

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

我正在使用pythonselenium& headless 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

已经花了很多天试图调试问题而没有运气。任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:15)

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

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

答案 1 :(得分:7)

在寻找类似错误时发现此问题。 看起来它是硒3.8.1和3.9.0的错误。

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

降级到3.8.0解决了这个问题

答案 2 :(得分:6)

我一直在使用Selenium和chromedriver(python3)进行刮擦。随着最新的谷歌Chrome更新,我不得不处理两个问题。

1)启动webdriver时出错:

解决方案:我不得不添加“no-sandbox”参数。

chrome_options.add_argument( ' - 无沙箱')

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

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

driver.set_page_load_timeout(60)

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

time.sleep(0.5)