Python 写的爬虫爬久了就假死咋回事
socket中添加一个超时 应该就能解决了:import socketsocket.setdefaulttimeout(timeout)建议看一下gevent,可以应用到爬虫中,gevent可以将系统socke全部patch成非阻塞的你可以同时维持N个连接,这样速度也会提高很多
■网友
你可以根据日志查一下,看看程序再抓哪些页面的时候死了,再分析一下为什么死。有些网站为了防止爬虫会采取一些措施,比如给你设计一个链接,你打开这个链接后跳到另一个页面,这个页面上还有一个链接,又链接到原来的页面,如果处理不好爬虫就在这死了。还有就是有些跳转会对爬虫有些干扰。其他的话有可能有些网站为了防止爬虫,直接返回403也有可能。 具体原因不清楚,但是你可以采取一些措施来避免。 比如你可以设计一个像硬件看门狗电路一样的程序,正常情况下,每隔一段时间就“喂狗”,当程序假死后,狗饿了,就会回来“咬你一口”,其实就是让程序复位啦。你如果是多进程的话,可以没隔一段时间给一个监控进程发信号,当监控进程收不到信号的时候就说明那个程序死了,然后强制终止爬虫进程,再开启一个新爬虫进程继续。
■网友
写爬虫不建议使用urllib2,以前自己用遇到过莫名其妙的假死,而且不支持 keep-alive 速度暴慢。大型的可以用scrapy框架也可以自己造轮子用 gevent,twisted 。小型的可以用requests。
■网友
求助,要帮别人爬8000多个记录吗,现在每次爬到几百个就假死了。。
推荐阅读
- 加热■手写的“时控标贴”靠谱吗? 饮品巨头寒冬争推热饮新品
- 怎样成为一名合格的Python程序员?
- python 爬虫,咋获得输入验证码之后的搜索结果
- python的html5lib这个库咋使用啊我在网上也没有找到相关文档
- 零基础入门学习啥语言好
- Python3.4和3.5区别大么
- python 中 def_():...... return _有啥作用
- 新互联网网站用Java还靠谱么对比Php,Python,Ruby的话
- 30岁男,创业失败转行学python,是否很晚?也不好找工作?
- Python 的开发速度比 C#.net 或 Vb.net 更快吗?
