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

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

你可以根据日志查一下,看看程序再抓哪些页面的时候死了,再分析一下为什么死。有些网站为了防止爬虫会采取一些措施,比如给你设计一个链接,你打开这个链接后跳到另一个页面,这个页面上还有一个链接,又链接到原来的页面,如果处理不好爬虫就在这死了。还有就是有些跳转会对爬虫有些干扰。其他的话有可能有些网站为了防止爬虫,直接返回403也有可能。

具体原因不清楚,但是你可以采取一些措施来避免。

比如你可以设计一个像硬件看门狗电路一样的程序,正常情况下,每隔一段时间就“喂狗”,当程序假死后,狗饿了,就会回来“咬你一口”,其实就是让程序复位啦。

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

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

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

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

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

如果是爬虫的话,这个一般都是由于网络原因造成的卡住,可以做两层控制:

在HTTP请求上设置好超时时间,最好设定sockect的超时,这样更底层一些。

在上层做一个检测机制,定时轮询线程是否正常,如果遇到不响应的直接kill掉。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/yw/11547821.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存