C# 如何在我的应用程序(web或控制台)中引入类似google的重新拉网
如何在我的应用程序(web或控制台)中引入类似google的重新拉网。我只需要那些网页被重新拉网后,一个特定的日期更新 System.Net.WebResponse中的LastModified标头仅提供服务器的当前日期。例如,如果我在2012年1月27日下载了一个带有HTTPWebRequest的页面,并检查了标题中的LastModified日期,那么它将显示该页面提供时服务器的当前时间。在这种情况下,仅为2012年1月27日C# 如何在我的应用程序(web或控制台)中引入类似google的重新拉网,c#,asp.net,web-crawler,C#,Asp.net,Web Crawler,如何在我的应用程序(web或控制台)中引入类似google的重新拉网。我只需要那些网页被重新拉网后,一个特定的日期更新 System.Net.WebResponse中的LastModified标头仅提供服务器的当前日期。例如,如果我在2012年1月27日下载了一个带有HTTPWebRequest的页面,并检查了标题中的LastModified日期,那么它将显示该页面提供时服务器的当前时间。在这种情况下,仅为2012年1月27日 有人能推荐其他方法吗?首先,这里要指出的是,你正在尝试做的事情非常困
有人能推荐其他方法吗?首先,这里要指出的是,你正在尝试做的事情非常困难,有大量的研究级论文试图解决这个问题(稍后我会给你一些链接)。如果不对站点进行爬网,就无法查看站点是否已更改,尽管您可以使用快捷方式,如检查响应标题中的内容长度,而无需下载页面的其余部分。这将允许您的系统节省流量,但它不会以真正有用的方式解决您的问题 其次,因为您关心内容,所以
Last Modified
标题字段对您来说不是很有用,我甚至可以说它根本没有用处
第三,您所描述的内容有一些相互冲突的要求,因为您只对具有更新内容的页面感兴趣,而这并不完全是Google的工作方式(然而,您希望像Google一样进行爬网)。谷歌的爬行专注于为最频繁搜索/访问的网站提供最新鲜的内容。例如:当一个网站每天有10名访问者时,谷歌对频繁抓取一个每天更新两次内容的网站没有什么兴趣,相反,谷歌更感兴趣的是抓取一个每天有1000万访问者的网站,即使其内容更新的频率较低。频繁更新内容的网站也有很多访问者,这可能是真的,但从谷歌的角度来看,这并不完全相关
如果你必须发现新的网站(覆盖范围),同时又想获得你所知道的网站的最新内容(新鲜度),那么你的目标就会相互冲突(这对大多数爬虫来说都是如此,甚至对谷歌也是如此)。通常情况下,当你有更多的报道时,你的新鲜感就会减少,如果你有更多的新鲜感,那么你的报道就会减少。如果您对平衡两者感兴趣,那么我建议您阅读以下文章:
- 在那之后,我会推荐阅读
- 最后:
这个想法的总结是,你必须对一个网站进行多次(可能是几百次)的爬网,以便你能够很好地衡量它的历史。一旦你有了一套良好的历史度量,那么你就可以使用预测模型来插值网站何时会再次更改,并在预期更改之后安排一段时间的爬网。你是否正在尝试爬网其内容已更改或服务器上的资源已更改的页面?这是一个重要的区别。。。如果您试图检测内容的更改,则“LastModified”不会向您提供该信息,因为内容是动态提供的。我想在特定的时间间隔(例如10天)安排爬网过程。重新爬网时,我只想爬网在上次爬网事件后修改过的页面。您没有真正回答我的问题。。。页面最后一次更改的时间与其内容更改的时间之间存在差异。页面内容可以更改,而实际服务器资源(即页面)不会更改。那么是哪一个,页面还是页面的内容?内容(如果可能的话,在不下载内容的情况下检测其中的变化)。