Python 写的爬虫爬久了就假死咋回事

socket中添加一个超时 应该就能解决了:import socketsocket.setdefaulttimeout(timeout)建议看一下gevent,可以应用到爬虫中,gevent可以将系统socke全部patch成非阻塞的你可以同时维持N个连接,这样速度也会提高很多
■网友
你可以根据日志查一下,看看程序再抓哪些页面的时候死了,再分析一下为什么死。有些网站为了防止爬虫会采取一些措施,比如给你设计一个链接,你打开这个链接后跳到另一个页面,这个页面上还有一个链接,又链接到原来的页面,如果处理不好爬虫就在这死了。还有就是有些跳转会对爬虫有些干扰。其他的话有可能有些网站为了防止爬虫,直接返回403也有可能。 具体原因不清楚,但是你可以采取一些措施来避免。 比如你可以设计一个像硬件看门狗电路一样的程序,正常情况下,每隔一段时间就“喂狗”,当程序假死后,狗饿了,就会回来“咬你一口”,其实就是让程序复位啦。你如果是多进程的话,可以没隔一段时间给一个监控进程发信号,当监控进程收不到信号的时候就说明那个程序死了,然后强制终止爬虫进程,再开启一个新爬虫进程继续。
■网友
写爬虫不建议使用urllib2,以前自己用遇到过莫名其妙的假死,而且不支持 keep-alive 速度暴慢。大型的可以用scrapy框架也可以自己造轮子用 gevent,twisted 。小型的可以用requests。
■网友
求助,要帮别人爬8000多个记录吗,现在每次爬到几百个就假死了。。


    推荐阅读