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

Python020

Python 写的爬虫爬久了就假死怎么回事,第1张

假死什么意思?

我遇到的几种情况是有可能你频繁的爬取同一个网站的数据,这个网站把你的ip暂时或者永久的加入了黑名单,一段时间内或者永久限制你的访问。网站可能有最大访问频率的限制,根据这个时间来设置时延可以解决这个问题。或者可能由于网络不稳定等原因。至于其他的问题就不清楚了。

我遇到的这种现象常见在引用占用了大量的系统内存,

后来我将直接读入大量数据到内存的过程改为用iter读取, 现象没再出现.

你的方案"超过一定时间...", 可以视为"守护进程",

如果这个进程是你的应用内的某个线程, 恐怕它会一同"睡"去 :(

.. 还是先确认一下是否是内存占用的原因吧, 如果是通过节省内存的方式可以克服的.

选择Python作为实现爬虫的语言,其主要考虑因素在于:

(1) 抓取网页本身的接口

相比其他动态脚本语言(如Perl、Shell),Python的urllib2包提供了较为完整的访问网页文档的API相比与其他静态编程语言(如Java、C#、C++),Python抓取网页文档的接口更简洁。

此外,抓取网页有时候需要模拟浏览器的行为,很多网站对于生硬的爬虫抓取都是封杀的。这时我们需要模拟User Agent的行为构造合适的请求,譬如模拟用户登录、模拟Session/Cookie的存储和设置。在Python里都有非常优秀的第三方包帮你搞定,如Requests或Mechanize。

(2) 网页抓取后的处理

抓取的网页通常需要处理,比如过滤Html标签,提取文本等。Python的Beautiful Soup提供了简洁的文档处理功能,能用极短的代码完成大部分文档的处理。

其实以上功能很多语言和工具都能做,但是用Python能够干得最快、最干净,正如这句“Life is short,you need Python”。

(3) 开发效率高

因为爬虫的具体代码根据网站不同而修改的,而Python这种灵活的脚本语言特别适合这种任务。

(4) 上手快

网络上Python的教学资源很多,便于大家学习,出现问题也很容易找到相关资料。另外,Python还有强大的成熟爬虫框架的支持,比如Scrapy。