2011-12-30 36 views
0

我要讓類似的可讀性,這從任何頁面僅抽出文章的文本,並刪除所有其他網頁正文......提取使用PHP

我使用file_get_contents得到一個網頁,這個作品精細。

當我得到這個,我怎麼才能提取出使用PHP的主要文章文本?

有沒有插件或有辦法做到這一點?

+2

你對「主要文章」有什麼意思?你如何識別哪個是主要的? – 2011-12-30 18:46:13

+1

定義「主要文章文本」。你有什麼標準來提取特定的文本? – 2011-12-30 18:46:31

+2

嘗試[HTML Purifier](http://htmlpurifier.org/)。 (或[Simple HTML DOM](http://simplehtmldom.sourceforge.net/),或者heck也許只是[DOM](http://php.net/manual/en/book.dom.php)。) – 2011-12-30 18:48:21

回答

2

有許多庫可以幫助你解析HTML,並且在SO上有很多關於它們的問題(比如this one),但這不是你最大的問題。

您的問題將是如何確定什麼確切是主要文章。您可能會確定哪些元素的標籤是兒童最多的<p>,但沒有理由我無法制作完全不使用<p>標籤的CMS。

1

HTML parsers來幫助實際轉換內容。

正如其他人所說,問題是確定哪些部分的內容。在沒有全球採用的純粹的semantic markup(這難道不是美好的?),你將有一系列的試驗和錯誤,以支持各種網站的各種內容。取決於你想要支持多少以及改變的頻率,這條路可能會變得很長。

刮刮數據並不是一帆風順的,人們都希望它是。

+0

所以我需要機器學習? – David19801 2011-12-30 18:54:54

+2

@ David19801:那麼,這取決於系統的先進程度。在這個問題中,你會說「任何頁面」,這是一個相當廣泛的範圍。在大多數情況下,您可以避開:1)默認存儲整個頁面。 2)開發一些模式匹配算法來「猜測」哪些部分是有用的內容。 3)在收集更多樣本數據時,針對錯誤匹配隨着時間的推移優化該算法。 4)對於經常刮取的網站,開發特定於網站的過濾器。你永遠不會達到100%的分數。但是你可能會以芝諾的方式達到80%的標準,其餘的80%,剩下的80%,等等。 – David 2011-12-30 19:02:47

+0

今天我會閱讀更多關於它的信息,我認爲這對我的情況來說是可以解決的(90%空白頁面中的大文本塊)。謝謝。 – David19801 2011-12-30 19:06:15