不重复抓取?有很多初学者可能会觉得。爬虫不是有深度优先和广度优先两种抓取策略吗?你这怎么又多出来一个不重复抓取策略呢?其实我这几天有不止一次听到了有人说要在不同页面增加同一页面链接,才能保证收录。我想真能保证吗?涉及收录问题的不止是抓没抓吧?也从而延伸出今天的这篇文章,不重复抓取策略,以说明在一定时间内的爬虫抓取是有这样规则的,当然还有很多其他的规则策略,以后有机会再说,例如优先抓取策略、网页重访策略等等。
回归正题,不重复抓取,就需要去判断是否重复。那么就需要记住之前的抓取行为,我们举一个简单的例子。你在我的QQ群里看到我发了一个URL链接,然后你是先看到了我发的这个链接,然后才会点击并在浏览器打开看到具体内容。这个等于爬虫看到了后才会进行抓取。那怎么记录呢?
假设这是一个网页上所有的链接,当爬虫爬取这个页面的链接时就全部发现了。当然爬取(理解为发现链接)与抓取(理解为抓取网页)是同步进行的。一个发现了就告诉了另外一个,然后前面的继续爬,后面的继续抓。抓取完了就存起来,并标记上,如上图,我们发现第2条记录和第6条记录是重复的。那么当爬虫抓取第二条后,又爬取到了第6条就发现这条信息已经抓取过了,那么就不再抓取了。爬虫不是尽可能抓更多的东西吗?为什么还要判断重复的呢?
其实,我们可以想一下。互联网有多少网站又有多少网页呢?赵彦刚是真没查证过,但这个量级应该大的惊人了。而本身搜索引擎的爬取和抓取都是需要执行一段代码或一个函数。执行一次就代表着要耗费一丁点资源。如果抓取的重复量级达到百亿级别又会让爬虫做多少的无用功?耗费搜索引擎多大的成本?这成本就是钱,降低成本就是减少支出。当然不重复抓取不光体现在这里,但这个是最显而易见的。你要知道的就是类似于内容详情页的热门推荐、相关文章、随机推荐、最新文章的重复度有多大?是不是所有页面都一样?如果都一样,那么可以适当调整下,在不影响网站本身的用户体验前提下,去适当做一些调整。毕竟网站是给用户看的,搜索引擎只是获取流量的一个重要入口,一种营销较为重要的途径!
评论(0人参与,0条评论)
发布评论
最新评论