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

kum*_*mar 10 python selenium httplib selenium-webdriver centos6.5

我试图从下面的URL中抓取数据.但是,有时候有时会driver.get(url)出现错误.在极少数情况下,它工作正常,在我的Mac上使用真正的浏览器,同一个蜘蛛每次都可以正常工作.所以这与我无关.[Errno 104] Connection reset by peer[Errno 111] Connection refusedspider

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

http://www.snapdeal.com/offers/deal-of-the-day
https://paytm.com/shop/g/paytm-home/exclusive-discount-deals
Run Code Online (Sandbox Code Playgroud)

我正在使用python,seleniumheadless 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
Run Code Online (Sandbox Code Playgroud)

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

kum*_*mar 15

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

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

  • 救了我很多看 - 谢谢. (2认同)

小智 7

我一直在使用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)


小智 7

在寻找类似错误的同时找到了这个问题.看起来像是一个硒3.8.1和3.9.0的bug.

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

降级到3.8.0解决了这个问题