由于爬虫爬取的数据是为搜索引擎服务的。而搜索引擎是为互联网的数据做整合分类以便用户进行检索查看的。因此需要能感知互联网的数据的变化。
即对于爬虫已经爬取的数据还需要定期去重新抓取,以检测页面是否变化。
页面的变化我们将其划分为两类:
一: 页面仍存在,但是页面的内容改变了。我们称之为内容更新。由于搜索引擎是基于爬虫爬取的网页的内容建立索引提供用户检索的。
如果在爬虫爬去之后网页的内容改变了。则可能会产生用户检索一个query,搜索引擎基于旧的内容判断网页适合用户query高度相关并返回该页面
的url给用户。而更新后的页面可能和用户的query是完全不相关的。这就会影响用户的体验。 另外更新后的内容可能会帮助我们发现一些新的重要的
url链接。 这样的问题我们统称为更新检测。
二: 页面已经不存在了,即我们已经无法通过网页的url获取网页的内容(http code 200).这种称之为死链。 在用户搜索是我们将这样的url返回给用户,
用户点击后却无法正常打开。也是会影响用户体验的。 这样的问题我们称为死链检测
更新检测
由于更新检测是判断页面内容的变化。因此怎么判断页面变化就是我们关注的焦点。而如何定义页面的变化就是这部分需要考虑的问题。
最简单的方式可以对抓取的网页整体内容计算一个hash值用来标记其内容。然后比对不同的两次抓取的网页内容的hash值是否相同来判断页面内容是否变化。
有变化则仍未网页有更新。该种方式对于页面内容不变化的判断是准确的。即如果网页内容的hah值没有改变,那么网页的内容没有任何变化。我们说网页没有更新
是准确的。但是对于网页的更新则是粗略的。即网页的内容即使值改变了一个html标签或者改变了一个字符,计算的hash值就不同了。这时对我们来说网页就是改变的。
此时带来的问题是改变的阈值较低