最近,我读了一本书作为面试的准备,遇到了以下问题:
当你的爬虫遇到一个蜜罐,生成一个无限的子图供你漫步时,你会怎么做?
我想得到这个qn的一些解决方案。就我个人而言,我会采取某种形式的深度限制搜索,以防止连续遍历。或者使用某种形式的机器学习来检测模式。有什么想法?
发布于 2011-07-22 02:16:55
最常见的无限子图是由链接深度阻止的。因此,您将获得一组初始urls,并将从每个urls遍历到有限深度。在限制遍历深度的同时,你可以使用一些启发式算法来根据网页特征动态调整它。更多信息可以找到,例如here。
另一种选择是尝试某种模式匹配。但根据生成子图的算法,这将是一项非常(非常困难)的任务。这至少也是一个非常昂贵的操作。
对于面试问题(关于检测无限循环):
如果他们问这个问题,有人想听到关于Halting problem的信息
Alan Turing在1936年证明了解决所有可能的程序输入对的暂停问题的通用算法是不存在的。
发布于 2011-07-22 02:09:17
您可以限制检索到的页数。当然这是有问题的..如果网站真的很大呢?维基百科是无限的吗?:)
更好的方法是根据链接到它的外部站点的数量和它们链接到的不同页面的数量来设置阈值。数字越大,你的阈值就越大。这可以解决两个相互连接的无限蜜罐的问题。
https://stackoverflow.com/questions/6780461
复制相似问题