2017-09-25 70 views
-2

我想了解如何監測網站的變化作品,以及它背後使用的概念。 我可以考慮創建一個抓取整個網站的抓取工具,將抓取的網頁與數據庫中的一個商店進行比較,如果網頁已更新,則將其覆蓋在html中的舊頁面,或者如果該網頁不存在,則將其存儲在數據庫中。 所以這裏是我的問題: 1-如何比較2個網頁,如果他們是相同的?我是否需要按字符比較網頁字符的字符串等值? 2-我是否需要抓取整個網站?讓我們假設一個網站的HTML頁面大小爲5Gb,我想每小時檢測一次該網站的變化,因此每小時爬行和下載5Gb數據將消耗大量帶寬。網站監控如何工作?

我可以編寫代碼,我只想知道用於監控網站的一般做法。

非常感謝。

+0

我認爲它使用最後修改標頭確定任何更改。如果有抓取請求,它會再次抓取它。 –

回答

0

一種選擇是將頁面的散列存儲在數據庫中,而不是將整個頁面存儲爲HTML。這將允許您檢查存儲的值。但你仍然必須「閱讀」頁面才能這樣做,所以是的,一個5GB的網站仍然會「下載」5GB來做到這一點。

我假設你只是堅持頁面,URL,上次更新,內容哈希等元數據,你還沒有真正說過爲什麼你可能會這樣做。

或許正如MartinJoneš所建議的,大部分只是抓取頁眉並檢查最後修改參數。

我還假設您只在您擁有/運行的網站上執行此操作。沒有什麼比討厭我的網站的那些「營銷」機器人更不喜歡的了,我的帶寬使用量增加了零值。它們只是吃我的帶寬而已。

+0

感謝您的詳細評論。我只是爲了教育目的而努力學習,並試圖學習如何抓取工作,特別是搜索引擎如何抓取數百萬個網站。另外,最後修改標題對我來說是新的。我認爲它只能用於測試網頁的最後修改時間,而不是整個網站。是否有可能測試一個網站是否使用類似標題等方式添加*新*網頁/內容而不是抓取整個網站? – Anon

+0

要做到這一點,你可以檢查一個sitemap.xml,如果提供,你可以比較舊版本,你已經存儲。假設該網站將所有頁面添加到它的sitemap.xml,他們並不都這樣做。 但除此之外,真的不是一個簡單的方法。頁面本身就是實體,因此如果實施的話,除了站點地圖以外,沒有中央檢查。 搜索引擎使用站點地圖,但他們也索引頁面上的單詞,以便他們清楚地下載整個頁面。他們還使用超鏈接來確定網站結構。 – Tyroga