2009-08-05 65 views
2

我正在編寫一個特殊的類似爬蟲的應用程序,需要檢索各種頁面的主要內容。只是爲了澄清:我需要的頁面的真正的「肉」(提供有一個自然)如何解析網頁的內容?

我已經嘗試了各種辦法:

  1. 多少頁RSS提要,這樣我就可以閱讀提要並獲取此頁面特定的contnent。
  2. 許多網頁上使用「內容」 meta標籤
  3. 在很多情況下,在屏幕的中間呈現的對象是頁面的主要「內容」

然而,這些方法不總是工作,我注意到Facebook在做這件事時做得非常出色(當你想附上一個鏈接時,他們會向你展示他們在鏈接頁面上找到的內容)。

因此 - 對於我過去看過的方法,您有任何建議嗎?

謝謝!

+0

爲什麼你認爲有什麼「主要內容」? – 2009-08-05 13:53:01

回答

1

真的沒有標準的方式讓網頁標記「這是肉」。大多數網頁甚至都不希望這樣做,因爲它可以更輕鬆地竊取他們的核心業務。所以你必須編寫一個框架,它可以使用每頁規則來定位你想要的內容。

0

那麼,你的問題仍然有點模糊。在大多數情況下,「爬蟲」將以文本格式在網絡上查找數據,並對其進行處理以進行存儲,解析等。「Facebook Screenshot」完全是一種不同的野獸。

如果您只是在尋找一個基於web的抓取工具,可以使用幾個庫來輕鬆遍歷網頁的DOM,並且可以抓取您正在查找的內容。

如果你正在使用Python,嘗試Beautiful Soup 如果你使用Ruby,嘗試hpricot

如果你想處理一個網頁的全部內容在以後的日子,簡單地獲取並存儲所有信息underneat的「html」標籤。

這裏有一個BeautifulSoup例子下車頁面中的所有鏈接:

require 'hpricot' 
require 'open-uri' 
doc = Hpricot(open("http://www.stackoverflow.com")) 
(doc/"a").each do |link| 
    puts link.attributes['href'] 
end 

編輯:如果你打算主要從相同的網站(如reddit的評論部分,從問題抓住內容StackOverflow,Digg鏈接等),你可以對它們的格式進行硬編碼,這樣你的抓取工具就可以說:「好的,我在Reddit上,把所有的東西都放在'東西'的類中,你也可以給它一個默認東西尋找類似「主」,「內容」,「中心」等的div,例如div。