簡體   English   中英

如何在我的應用程序(Web或控制台)中進行類似Google的重新抓取

[英]How can I bring google-like recrawling in my application(web or console)

如何在我的應用程序(Web或控制台)中進行類似Google的重新抓取。 我只需要重新抓取那些在特定日期之后更新的頁面。

System.Net.WebResponse中的LastModified標頭僅提供服務器的當前日期。 例如,如果我在2012年1月27日下載了一個帶有HTTPWebRequest的頁面,並檢查LastModified日期的標題,則顯示服務頁面時服務器的當前時間。 在這種情況下,它只是2012年1月27日。

誰能建議任何其他方法?

首先,要指出的是,你要做的事情非常困難,並且有很多研究級別的論文試圖解決它(我稍后會給你鏈接其中的一些)。 雖然您可以使用快捷方式,例如從響應標頭檢查Content-Length而不下載頁面的其余部分,但無法查看網站是否已更改而未對其進行爬網。 這將允許您的系統節省流量,但它不會以非常有用的方式解決您的問題。

其次,既然你關注內容,那么Last-Modified標題字段對你來說不是很有用,我甚至會說它根本不會有用。

第三,你所描述的內容有一些相互沖突的要求,因為你只對抓取已更新內容的網頁感興趣,而這與Google的工作方式不完全相同(但是,你需要類似Google的抓取)。 谷歌的抓取重點是為最常搜索/訪問過的網站提供最新鮮的內容。 例如:Google很少有興趣頻繁抓取每天兩次更新其內容的網站,當時該網站每天有10位訪問者,而Google則更有興趣抓取每天獲得1000萬訪問者的網站,即使其內容更新不太常見。 經常更新其內容的網站也可能擁有大量訪問者,但從谷歌的角度來看,這並不完全相關。


如果你必須發現新的網站(報道),同時你想獲得你所知道的網站的最新內容(新鮮度),那么你就會有相互沖突的目標(大多數抓取工具,甚至谷歌都是這樣)。 通常最終會發生的事情是,當你有更多的報道時,你的新鮮感會降低,如果你有更多的新鮮感,那么你的報道就會減少。 如果你有興趣平衡兩者,那么我建議你閱讀以下文章:

這個想法的總結是你必須多次(可能幾百次)抓取一個網站,以便你建立一個很好的歷史記錄。 一旦你有了一套很好的歷史測量數據,那么你就可以使用預測模型來插入網站何時會再次更改,並在預期的更改后安排爬行一段時間。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM