Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在我的应用程序(web或控制台)中引入类似google的重新拉网_C#_Asp.net_Web Crawler - Fatal编程技术网

C# 如何在我的应用程序(web或控制台)中引入类似google的重新拉网

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日 有人能推荐其他方法吗?首先,这里要指出的是,你正在尝试做的事情非常困

如何在我的应用程序(web或控制台)中引入类似google的重新拉网。我只需要那些网页被重新拉网后,一个特定的日期更新

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


有人能推荐其他方法吗?

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

其次,因为您关心内容,所以
Last Modified
标题字段对您来说不是很有用,我甚至可以说它根本没有用处

第三,您所描述的内容有一些相互冲突的要求,因为您只对具有更新内容的页面感兴趣,而这并不完全是Google的工作方式(然而,您希望像Google一样进行爬网)。谷歌的爬行专注于为最频繁搜索/访问的网站提供最新鲜的内容。例如:当一个网站每天有10名访问者时,谷歌对频繁抓取一个每天更新两次内容的网站没有什么兴趣,相反,谷歌更感兴趣的是抓取一个每天有1000万访问者的网站,即使其内容更新的频率较低。频繁更新内容的网站也有很多访问者,这可能是真的,但从谷歌的角度来看,这并不完全相关


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

  • 在那之后,我会推荐阅读
  • 最后:

这个想法的总结是,你必须对一个网站进行多次(可能是几百次)的爬网,以便你能够很好地衡量它的历史。一旦你有了一套良好的历史度量,那么你就可以使用预测模型来插值网站何时会再次更改,并在预期更改之后安排一段时间的爬网。

你是否正在尝试爬网其内容已更改或服务器上的资源已更改的页面?这是一个重要的区别。。。如果您试图检测内容的更改,则“LastModified”不会向您提供该信息,因为内容是动态提供的。我想在特定的时间间隔(例如10天)安排爬网过程。重新爬网时,我只想爬网在上次爬网事件后修改过的页面。您没有真正回答我的问题。。。页面最后一次更改的时间与其内容更改的时间之间存在差异。页面内容可以更改,而实际服务器资源(即页面)不会更改。那么是哪一个,页面还是页面的内容?内容(如果可能的话,在不下载内容的情况下检测其中的变化)。