我如何才能在我的应用程序(网络或控制台)中引入类似谷歌的重新抓取

本文关键字:谷歌 抓取 新抓取 控制台 我的 网络 应用程序 | 更新日期: 2023-09-27 18:21:30

如何在我的应用程序(web或控制台)中引入类似谷歌的重新爬网。我只需要那些在特定日期后更新的页面。

System.Net.WebResponse中的LastModified标头仅提供服务器的当前日期。例如,如果我在2012年1月27日用HTTPWebRequest下载了一个页面,并检查了LastModified日期的标题,它显示了该页面提供时服务器的当前时间。在这种情况下,日期仅为2012年1月27日。

有人能提出其他方法吗?

我如何才能在我的应用程序(网络或控制台)中引入类似谷歌的重新抓取

首先,要指出的是,你试图做的事情非常困难,有很多研究级别的论文试图解决这个问题(稍后我会给你一些链接)。如果不对网站进行爬网,就无法查看网站是否发生了更改,尽管您可以使用快捷方式,如在不下载页面其余部分的情况下从响应标头中检查内容长度。这将允许您的系统节省流量,但它不会以真正有用的方式解决您的问题。

其次,由于您关心内容,那么Last-Modified头字段对您来说将不是很有用,我甚至会说它根本没有用处。

第三,你所描述的内容有一些相互矛盾的要求,因为你只对抓取有更新内容的页面感兴趣,而谷歌并不是这样做的(然而,你想要像谷歌一样的抓取)。谷歌的抓取专注于为最频繁搜索/访问的网站提供最新鲜的内容。例如:当一个网站每天有10名访问者时,谷歌对频繁地对一个每天更新两次内容的网站进行爬网几乎没有兴趣,相反,谷歌更感兴趣的是对一个一天有1000万访问者的网站进行爬行,即使其内容更新频率较低。经常更新内容的网站也有很多访问者,这可能也是事实,但从谷歌的角度来看,这并不完全相关。


如果你必须发现新的网站(覆盖率),同时又想获得你所知道的网站的最新内容(新鲜度),那么你的目标是矛盾的(这对大多数爬虫来说都是如此,甚至谷歌也是如此)。通常情况下,当你有更多的报道时,你的新鲜感就会降低,如果你有更多新鲜感,那么你的报道就会减少。如果你有兴趣平衡两者,那么我建议你阅读以下文章:

  • 网络爬虫:综述
  • 之后,我建议阅读自适应联机页面重要性计算
  • 最后:扩展到60亿页及以上

这个想法的总结是,你必须爬一个网站好几次(也许几百次),才能很好地了解它的历史。一旦你有了一套好的历史衡量标准,你就可以使用预测模型来插值网站何时会再次更改,并在预期更改后安排一段时间的爬网。