网络爬虫的 “ 黑洞 ”

在遍历型的网络爬虫中。

参考宽度优先遍历 http://www.cnblogs.com/LexMoon/p/javaMyClawler.html

网络爬虫在遍历抓取一张网页的链接时,会出现的情况。
       1 .链接本身可能是一个无限循环,以至于白白的消耗资源。

   2 .看似不同的链接却指向同一个网页。(动态网页)

  例如,一个爬虫来到了一个网站,被指定了一个SessionId,然后嵌入这个ID,爬虫开始在该网站爬取所有页面。另一个爬虫也来到了这个网站,得到了一个全新的SessionId,网站服务器不能探测到这是同源的爬虫,并不知道之前它已经来过。就导致了页面多次索引,浪费了资源。

  那么如何避免此类情况呢?

  :最容易死循环和多次陷入的页面往往是动态页面。

  怎么识别动态网页呢?

       :看URL中是否出现问号,含有问号的就是动态网页,它们的指向往往相同,但是URL中带有一些无关参数,例如时间(在线日历),网络信息,对于此类链接,应当做适合的截取。

  

  很多商业搜索引擎都在避免这些带问号的URL,因为这类URL可能会导致爬虫陷入。(谷歌似乎有合适的解决方案)

附注:其他可参考的方法 

      1 . 限制爬取深度

  2 . Visited表。

  3 . 主题爬虫 : 对特定内容的网页爬取(新闻,音乐等) 。

  4 . 限定爬虫 : 对爬取目标主机限定。

posted @ 2017-12-26 16:15  AntzUhl  阅读(509)  评论(0编辑  收藏  举报