在遍历型的网络爬虫中。
参考宽度优先遍历 http://www.cnblogs.com/LexMoon/p/javaMyClawler.html
网络爬虫在遍历抓取一张网页的链接时,会出现的情况。
1 .链接本身可能是一个无限循环,以至于白白的消耗资源。
2 .看似不同的链接却指向同一个网页。(动态网页)
例如,一个爬虫来到了一个网站,被指定了一个SessionId,然后嵌入这个ID,爬虫开始在该网站爬取所有页面。另一个爬虫也来到了这个网站,得到了一个全新的SessionId,网站服务器不能探测到这是同源的爬虫,并不知道之前它已经来过。就导致了页面多次索引,浪费了资源。
那么如何避免此类情况呢?
:最容易死循环和多次陷入的页面往往是动态页面。
怎么识别动态网页呢?
:看URL中是否出现问号,含有问号的就是动态网页,它们的指向往往相同,但是URL中带有一些无关参数,例如时间(在线日历),网络信息,对于此类链接,应当做适合的截取。
很多商业搜索引擎都在避免这些带问号的URL,因为这类URL可能会导致爬虫陷入。(谷歌似乎有合适的解决方案)
附注:其他可参考的方法
1 . 限制爬取深度
2 . Visited表。
3 . 主题爬虫 : 对特定内容的网页爬取(新闻,音乐等) 。
4 . 限定爬虫 : 对爬取目标主机限定。