2015-09-01 59 views
2

我想从下面的网址刮取数据。但硒driver.get(url)失败有时错误是[Errno 104] Connection reset by peer,有时[Errno 111] Connection refused在罕见的日子里,它工作得很好和我的Mac与真正的浏览器相同的蜘蛛工作正常每一次。所以这和我的spider没有关系。硒无头浏览器webdriver [Errno 104]连接重置由对端

已经尝试了许多解决方案,如等待页面上的选择器,隐式等待,使用硒请求哟传递适当的请求标头等,但似乎没有任何工作。

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 

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

回答

7

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

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

+0

救了我很多的期待 - 谢谢。你的意思是 – SteveJ

2

我一直在使用Selenium和chromedriver(python3)进行一段时间的刮取。有了最新的Google Chrome更新,我必须处理两个问题。

1)错误上推出的webdriver:

解决办法:我不得不添加 “无沙箱” argumement。

chrome_options.add_argument( '无沙箱')

2)[错误104]连接由对等复位:

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

driver.set_page_load_timeout(60)

我加webdrivers initialisations这也似乎有助于之间有一个小的延迟。

time.sleep(0.5)

+0

“--no-sandbox”?还是应该没有两个前面的连字符? – Anubis

相关问题