2012-12-17 50 views
1

我有一個網站從網站上抓取所有最新新聞的功能(約10條新聞和新聞數量由該網站決定)。請注意,該消息按照時間順序排列。從網站獲取新聞的最佳途徑?

例如,昨天我得到了10條新聞並保存在數據庫中。今天我得到10條消息,但有3條消息是昨天沒有的(7條消息保持不變,3條新消息)。

我目前的做法是提取每條新聞,直到找到一條舊新聞(7條新聞中的第一條),然後我停止提取,只更新舊新聞的字段"lastUpdateDate"並向數據庫添加新消息。我認爲這種方法有點複雜,需要時間。

其實我從20個內容結構相同的網站(Moodle)收到消息,所以每個請求將持續大約2分鐘,這是我的免費主機不支持的。

如果我刪除所有新聞,然後從一開始就提取所有內容(實際上會增加數據庫中大量的ID號),那麼它會更好嗎?

回答

2

首先,檢查,看看是否網站有公佈的API。如果有,使用它。

其次,檢查網站的服務條款,這可能會明確和明確地禁止抓取網站。

第三,看看您選擇的編程語言中的一個模塊,該模塊處理頁面提取從頁面提取內容。在Perl中,您可以從WWW::MechanizeWeb::Scraper開始。

不管你做什麼,都不要陷入這樣的陷阱,那些發佈到StackOverflow的人會陷入:抓取網頁,然後試圖解析內容本身,最常見的是正則表達式,這是一個不適合的工具工作。瀏覽SO標籤,瞭解那些試圖推出自己的HTML解析系統而不是使用現有工具的人的悲傷故事。

+0

謝謝,我正在使用Simple Html-Dom Parser進行這項工作 – Silentbang

+0

想到我想添加一個網站的條件條件,當涉及到網絡抓取時,並不意味着什麼,只是基本上是一個警告,他們可能會試圖阻止你/讓你更難以廢除。着作權是你需要擔心的事情,但如果你正在刮anything任何公開的知識或不聲稱它是你的創造性財產,它的公平遊戲,幾乎網絡上的所有信息在法律上都是可以廢棄的(我的信息基於一對夫婦最高法院判決,不能記住我頭頂的名字,我確信有一個很好的維基頁面) – Greg

0

如果要向用戶顯示舊消息,則取決於要求。

刮您可以創建cron作業將從這些新聞網站抓取數據,並存儲到數據庫中的自定義本地腳本。

你也可以檢查主題,如果它已經存在沒有。

最後製作一個自定義新聞塊,它將顯示所有數據庫提要。