当前位置: 首页 > 编程语言 > C#

如何在我的应用程序(网络或控制台)中进行类似谷歌的重新抓取分享

时间:2023-04-11 02:52:28 C#

C#学习教程:如何在我的应用程序(Web或控制台)中执行类似Google的重新抓取.我只需要重新抓取那些在特定日期后更新的页面。System.Net.WebResponse中的LastModified标头仅提供服务器的当前日期。例如,如果我在2012年1月27日下载了一个带有HTTPWebRequest的页面,并检查了标头中的LastModified日期,它显示了服务该页面时服务器的当前时间。在这种情况下,它只是2012年1月27日。任何人都可以建议任何其他方法吗?首先,要指出你正在尝试做的事情非常困难,并且有很多研究级论文试图解决它(稍后我会链接到一些)。虽然您可以使用快捷方式,例如从响应标头检查Content-Length而无需下载页面的其余部分,但如果不抓取网站,则无法查看网站是否已更改。这将允许您的系统节省流量,但它不会以真正有用的方式解决您的问题。其次,由于您关注的是内容,因此Last-Modified标头字段对您来说不是很有用,我什至可以说它根本没有用。第三,您所描述的内容有一些相互冲突的要求,因为您只想抓取具有更新内容的页面,这与Google的工作方式并不完全相关(但是,您想像Google那样抓取)。Google的抓取重点是为搜索/访问最多的网站提供最新的内容。例如:当每天有10个访问者时,Google对频繁抓取每天更新两次内容的网站不太感兴趣,而Google对抓取每天有1000万访问者的网站更感兴趣,即使其内容是更新不是很常见。同时更新其内容的网站也可能拥有大量访问者,但从Google的角度来看,这并不完全相关。如果你必须发现新的网站(覆盖率),同时你想从你知道的网站上获取最新的内容(新鲜度),那么你就有了相互冲突的目标(这对大多数爬虫来说都是如此,甚至谷歌也是如此)。通常最终会发生的情况是,当你的覆盖率更高时,你的新鲜度就会降低,而如果你的新鲜度更高,你的覆盖率就会降低。undefined