Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我最近在准备面试一本书,遇到了以下问题:
当你的爬虫遇到一个蜜罐,它会生成一个无限的子图让你四处游荡时,你会怎么做?
我想为这个 qn 找到一些解决方案。就个人而言,我会进行某种形式的深度限制搜索,以防止连续遍历。或者也许使用某种形式的机器学习来检测模式。想法?
最常见的无限子图是通过链接深度来防止的。因此,您获得了一组初始网址,您将从每个网址遍历到有限的深度。在限制遍历深度的同时,您可以使用一些启发式方法根据网页特征动态调整它。更多信息可以在这里找到,例如。
另一种选择是尝试某种模式匹配。但是取决于生成子图的算法,这将是一项非常(非常非常非常)艰巨的任务。这也将至少是一项相当昂贵的操作。
对于面试问题(关于检测无限循环):
如果他们问这个问题,有人想听听关于停止问题的参考
Alan Turing 在 1936 年证明,不可能存在解决所有可能的程序输入对的停止问题的通用算法。
您可以限制检索到的页面数。这当然有问题.. 如果网站真的很大怎么办?维基百科是无限的吗?:)
更好的方法是根据链接到它的外部站点的数量以及它们链接到的不同页面的数量来设置阈值。数字越大,您的阈值就越大。这可以解决几个相互链接的无限蜜罐的问题。