2014-02-16 27 views
0

我正在嘗試編寫一個抓取工具來抓取包含大約15 GB數據的網站的信息。我抓取信息並將其存儲在我的數據庫中。現在每週新網頁都會繼續添加到網站中,同時舊網頁也會更新。這是否意味着我必須重新抓取整個15 GB的數據,並且每次編輯時都要重新構建我的數據庫。處理這個問題最簡單的方法是什麼? Google新聞如何運作,是因爲他們面臨類似的信息在全球範圍內更新的問題?到現在我已經找到關於這一主題的下列研究論文:新的動態數據抓取

http://oak.cs.ucla.edu/~cho/papers/cho-tods03.pdf

而且是它總是需要編寫自定義履帶用於這一目的?不能使用Scrapy或Nutch?

+0

個人而言,在我的抓取工具中,我優先抓取新頁面,重新抓取已更新的舊頁面。我以我只需要在頁面更改時部分更新數據庫的方式編寫代碼。 – goat

+0

,但想象你正在從像imdb這樣的網站上抓取一些數據,每天收視率變化,新電影不斷增加......你如何處理這個問題? –

+0

對不起,我沒有看到問題是什麼?大多數爬蟲不得不處理更新... – goat

回答

1

你可以在Nutch中做什麼是使用AdaptiveFetchSchedule,如解釋here。它可以讓Nutch重新抓取頁面,檢測它是否在此期間發生了變化,並使計劃更加頻繁地重新抓取更頻繁更改的頁面,反之亦然。 當然,如果日期在最後一次抓取之前,您可以檢查Last-Modified標題是否存在並且要被信任,並且不重新抓取。不知道在Nutch中是否已經實現了這個功能,或者是否使用了一些基於散列的解決方案,但如果需要的話,手動操作並不難。

+0

感謝您的回覆。一旦我在Nutch上實現相同的功能,我會將其標記爲已接受。我正在使用imdb數據,imdb上的最後修改標題通常會顯示當前時間,因爲我相信網頁上的新聞更新。 –

+0

如果網頁由於廣告或其他因素而不斷變化,無論使用哪種算法,它都會檢測到變化......也許您應該將元素黑名單添加到公式中。我爲此做了一個簡單的插件:https://github.com/veggen/nutch-element-selector – kaqqao