Web搜寻器设计中的DFS与BFS

Naz*_*gol 3 webpage web-crawler depth-first-search

我想出一个面试问题,想了解您对此的看法。问题是,在设计网络爬虫时:

1)用DFS和BFS会打什么样的页面?

2)如何避免陷入无限循环?

我很高兴有人可以回答他们。

fly*_*yer 5

1)用DFS和BFS会打什么样的页面?

在大多数情况下,我将使用BFS算法来实现蜘蛛程序,因为我想从网页获取的最有价值的信息没有太多的链接深度,否则,我认为由于设计不良,该网站没有太多的价值。

如果我想从一些具体的数据一个从几跳,并在同一时间,我想看到的蜘蛛运行后不久,结果页面和其他相关数据的话,我可能会选择DFS算法。说,我想从stackoverflow获取所有标签。标签页在这里。同时,我想让谁回答标签中的哪些问题。我想检查蜘蛛网是否正常运行。然后,我使用DFS算法在蜘蛛运行后立即获取数据标签问题和答案

总之,这取决于使用情况。

2)如何避免陷入无限循环?

这个问题可能很简单。解决方案如下:

  • 使用最大链接深度
  • 记录您已爬网的URL,并在发出新请求之前,检查该URL是否已被爬网。

我记得scrapy似乎可以解决第二个问题。您可以阅读其源代码以寻找更好的解决方案。