2008-08-29 8 views
32

私は正規表現を使用してPHPでhtmlスクラップを行ってきました。これは動作しますが、結果は厄介で壊れやすくなります。より堅牢なソリューションを提供するパッケージを使用した人はいますか?構成主導型のソリューションが理想的ですが、私は気にしません。PHPでのスクラップ

+0

[この](http://stackoverflow.com/questions/26947/how-to-implement-a-web-scraper-in-php#27109)スレッドを見てください - 質問は、同様の方向に入ります – crono

答えて

28

このページからHTMLを削った後は、PHP Simple HTML DOM Parserをお勧めします。それは無効なHTMLをサポートし、HTML要素を扱う非常に簡単な方法を提供します。あなたはスクレーピングしているページが有効なX(HT)MLであれば

+8

String Parsingの代わりに[DOM](http://php.net/manual/en/book.dom.php)を実際に使用する[SimpleHtmlDom](http://simplehtmldom.sourceforge.net/)の第三者代替案を提案しました。 :[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

+0

あなたは私に与えられたページのリンクをクリックする例を教えてもらえますか? –

5

、その後、PHP's built-in XML parsersのいずれかが行います。

私はスクレイピングのためにPHPライブラリで多くの成功を収めていません。あなたが冒険しているなら、simplehtmldomを試すことができます。 Rubyの場合はHpricot、Pythonの場合はBeautiful Soupをお勧めします。どちらも優れたパーサーです。

+0

特に醜いHTMLを解析する場合は、BeautifulSoup 3.1.x(3.0.xを使用)を使用しないでください。 3.1.xはhtmllibをパーサーとして使用しています。これは、3.0.xのsgmllibの使用よりもはるかに寛容です。 – Tom

5

私はで動作するようにいくつかのそれほどハイエンドソリューションではありませんhtmlSQLで作業を楽しみ、が、本当に簡単でした。私は個人的にcURLの+の正規表現を使用してもHTMLスクレイピングのためのPHPを使用して

+0

最近のコメントですが、私はちょうどGoogleを介してあなたの答えを見つけました..私はそれが好きです! :) – Ben

+0

今でもあなたのために働くのですか?それは私にとってはうまくいかないようです... – Dinesh

3

は、私は、cURLの+の正規表現やcURLの+いくつかのDOMパーサをお勧めします。あなたがregexpの深い味を持っているなら、実際にはもっと正確です。

5

「シンプルHTML DOMパーサー」もお勧めします。特に、jQueryやJavaScriptのセレクタに精通していれば、自宅にいると良い選択肢です。

I have even blogged about it in the past.

2

私は私のホスト1and1でカールを使用する必要がありました。

http://www.quickscrape.com/私はSimple DOMクラスを使用しています!

関連する問題