【问题标题】:DFS vs BFS in web crawler design [closed]网络爬虫设计中的 DFS 与 BFS [关闭]
【发布时间】:2014-01-01 23:16:10
【问题描述】:

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

1) DFS 与 BFS 相比,您会访问哪种类型的页面?

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

如果有人能回答他们,我很感激。

【问题讨论】:

标签: web-crawler webpage depth-first-search


【解决方案1】:

1) 使用 DFS 与 BFS 相比,您会访问哪些类型的页面?

在大多数情况下,我会使用 BFS 算法来实现爬虫,因为我想从网页中获取的最有价值的信息没有太多的链接深度,否则我认为该网站没有太大的爬取价值,因为不好设计。

如果我想从一个页面中获取一些特定的数据和从几跳中获取其他相关数据,同时我想在蜘蛛运行后很快看到结果,那么我可以选择DFS 算法。说,我想从 stackoverflow 中获取所有标签。标签页是here。同时,我想知道谁在标签中回答了什么问题。我想检查蜘蛛是否正常运行。然后我使用 DFS 算法在蜘蛛运行后不久获取数据tag-questions-answers

一句话,看使用场景。

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

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

  • 使用 最大链接深度
  • 记录你抓取过的url,在发出新请求之前,检查url是否被抓取过。

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

【讨论】:

  • 谢谢@flyer。我从你的回答中得到了这个想法。
猜你喜欢
  • 2012-07-31
  • 2011-07-07
  • 1970-01-01
  • 1970-01-01
  • 2011-08-15
  • 2023-04-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-15
相关资源
最近更新 更多