2008-08-29 34 views
32

我一直在使用正則表達式在PHP中進行一些html抓取。這有效,但結果是挑剔和脆弱。有沒有人使用過任何提供更強大解決方案的軟件包?一個配置驅動的解決方案將是理想的,但我不挑剔。HTML Phraping在Php

+0

看看[this](http://stackoverflow.com/questions/26947/how-to-implement-a-web-scraper-in-php#27109)線程 - 問題進入類似的方向 – crono 2008-08-29 08:16:06

回答

28

在從頁面中獲取HTML後,我會推薦PHP Simple HTML DOM Parser。它支持無效的HTML,並提供了一種處理HTML元素的非常簡單的方法。

+8

建議使用[SimpleHtmlDom](http://simplehtmldom.sourceforge.net/)的第三方替代方案,它實際使用[DOM](http://php.net/manual/en/book.dom.php)而不是字符串解析:[phpQuery](http://code.google.com/p/phpquery/),[Zend_Dom](http://framework.zend.com/manual/en/zend.dom.html),[QueryPath]( http://querypath.org/)和[FluentDom](http://www.fluentdom.org)。 – Gordon 2011-10-10 15:08:39

+0

你能給我舉個例子來點擊給定頁面上的任何鏈接嗎? – 2013-11-12 07:51:32

5

如果您正在抓取的頁面是有效的X(HT)ML,則可以使用PHP's built-in XML parsers中的任何一個。

我還沒有取得太多的成功與PHP庫的刮。如果你冒險,但你可以嘗試simplehtmldom。我建議使用Ruby的Hpricot或Python的Beautiful Soup,它們都是優秀的用於HTML的解析器。

+0

如果您打算解析特別潦草的HTML,請確保您不使用BeautifulSoup 3.1.x(使用3.0.x)。 3.1.x使用htmllib作爲它的解析器,這比3.0.x對sgmllib的使用寬鬆得多。 – Tom 2009-03-18 01:33:03

5

我和htmlSQL一起工作很有趣,這不是一個高端解決方案,但非常簡單。

3

使用PHP進行HTML抓取,儘管我個人使用cURL + regexp,但我推薦使用cURL + regexp或cURL +一些DOM解析器。如果你對regexp有深刻的印象,有時候它確實更精確。