Web crawler 的一些问题

请问老师,

1.我在一些帖子上看到面试官提问web crawler 是用dfs还是bfs好
如果我回答的话只能说出dfs的缺点有 1. 容易对某一domain crawl过快 2. 如果一个domain网页过多那么久高度集中在这个domain了 优点就是不用多次connection或者handshake到同一个domain server(这个我不太确定连同一个domain是不是还是要re-establish connection)?
bfs我就不知道优缺点了感觉就是没有dfs的缺点?

  1. 在普通版web crawler中,由于我们的每一个部分都是distributed的那么我们如何决定分配url到哪台机器呢?(也就是哪台url frontier)(1) 如果hash(url)的话那么不同的机器可能会爬同样的domain 这样的话即使每台机器限制了爬取同一个domain的速度,还是有可能加起来很频繁?或者说这就是一个无法避免的问题?
    (2) 如果hash(domain_name)的话,可能会有一些大网站比如google网页过于多导致某些url frontier queue 太长了?
    (3)或者说是其他分配方法?也有个command control server?

多谢老师答疑解惑!

请问老师这个帖子~

  1. 你说的dfs缺点是对的,优点的话,多次connection不管怎么都是需要的,只是域名解析(把网址翻译成 ip address)可以省,但是就算是 BFS 也可以省的。应该选择 BFS,主要原因就是你说的缺点二。
  2. URL Frontier 不是一个服务而是一系列服务的总和。Front Queue 里会按照 Priority 来分,Back Queue 里会按照 domain 来分。

感觉用Queue就是BFS了。 就跟算法里的BFS实现一样。 DFS 需要用stack :grinning_face_with_smiling_eyes: