[爬虫] 关于第三课爬虫的几个设计的问题

  1. URL frontier那张图里,back queue router会把同一个host的放在一个queue里,它是如何知道这个信息呢?是否提前规定好每个host对应的queue?如果是的话,是以key-value形式存储吗?如果有新的host进来,它会自动生成一个queue吗?

  2. front queue 和back queue一般使用什么来implement的?

  3. fetch和dns resolver;说“保证fetch出来的东西是效率比较高的,不会花太多的时间在dns resovler上”,是指如果解析成ip address用的时间过长,就放弃这个url吗?什么情况会导致时间过长呢?

  4. 比较high-level的问题是,我不太理解爬虫的应用场景,听了第四课后明白他是搜索的foundation,那除了搜索,还有别的情况用爬虫吗?

  5. 对html那个 big table underlying的储存还是不太理解。老师上课说了本质是key-value储存,key是row+column+time,row是url比如cnn.com, column是html,这边的html指的是html的string形式吗?那value也是html,这两个html是不是指的不同的东西。我看图中的column是contents.,anchor这种,是html的一个部分吗?不太了解html

  1. 一个 key 对应一个 Queue,key 是 Host URL/ID. 如果有新的 Host,会使用当前空的 Queue 或者新建。
  2. 编程语言中的 Queue,自己实现。
  3. 不是。是说 Async DNS resolver 解析域名效率很高。
  4. 主要就是收集互联网上的信息。比如存储整个 Wikipedia 到本地就可以用爬虫。
  5. 你理解的不对。课上的例子是 - row: “com.cnn.www”; column: “contents:” value: HTML page。这里的 column 就是一个 string,写着 “contents:” 几个 character。