2013-03-26 82 views
4

我熟悉在php中使用XPATH來解析DOM以獲得我想要的頁面。我想聽到的是關於如何以編程方式忽略頁面上的頁眉,頁腳和側邊欄以及僅提取主體內容的一些建議。只刮掉網頁的主要內容(忽略頁眉,頁腳和側邊欄)

給出的情況是沒有特定的目標,所以我不能簡單地忽略#header和#footer這樣的特定id,因爲每個頁面的寫法都有些不同。

我知道谷歌這樣做,我知道這一定是可能的,我只是不知道從哪裏開始。

謝謝!

+0

http://stackoverflow.com/questions/10996357/scrap-data-through-xpath-from-div-that-c​​ontains-javascript-in-scrapy-python – IceDevil 2013-03-26 18:02:45

+0

感謝冰魔,但我不明白這與我的問題有何關係? – deweydb 2013-03-27 13:44:01

回答

1

有沒有小的或快速的方式來颳去網頁上的內容。我做了很多這些。對此沒有簡單的規則。早些時候在基於html3 /表格的設計日,有不同的方式來識別和網站設計本身是有限的。屏幕尺寸受到限制,因此菜單位於頂部,右側或左側面板沒有空間。然後來到帶有桌面設計的面板的時代。現在是浮動內容的時間。然後我們甚至使用溢出:隱藏所以它更難以通過字數統計身體等。

當寫入html文件時,代碼永遠不會被標記爲內容或菜單。有時你可以從類名中派生出來,但這不是通用的。內容從CSS獲取其大小和位置。所以你的解析器本身不能確定頁面的正文部分。如果您使用嵌入式HTML查看器並使用DHTML/JS在渲染後定位塊的大小,則可能有一些方法可以實現,但仍然不會通用。我的建議是使你的解析器,並逐案改進。

對於谷歌來說,它已經制作了大部分html設計組合的程序。但即使是谷歌,做一個通用的解析器,我認爲是不可能的。

2

有沒有確定的方法來確定它,但你可以用啓發式方法得到合理的結果。建議:

從同一網站上刮掉兩個或多個頁面,並從頂層開始逐塊比較它們,進行幾個級別的深度處理,直到塊數足夠大爲止。比較不會是==,而是一個相似性指數,例如similar_text。 超過一定比例的相似性的塊很可能是頁眉,頁腳或菜單。你將不得不通過實驗找出哪個閾值是有用的

相關問題