PHPでのスクレイピングに役立つライブラリ

APIが提供されていないサービスから欲しい情報だけを取得するには、HTMLなどから自前でスクレイピングを行うしかありません。PHPでのスクレイピングに役立つライブラリなどをまとめてみました。

PerlやRubyには色々と便利そうなものが見つかるのですが、PHPにはなかなかこれといったものがないですね。

Webスクレイピングライブラリ

HTMLScraping
HTMLXML化してDOMやXPathで操作できるクラス。主にHTTP_Request+HTMLParser(XML_HTMLSax3を含む)/Tidy+Cache_Liteという構成で、スクレイピングに必要なものが一通り揃っている。ライセンスはLGPL他。
WebScraper
シンプルな汎用スクレイピングクラス。HTTP_Client+HTMLParser(XML_HTMLSax3を含む)という構成で、XPathで要素を抽出できる。自分好みにカスタマイズするのに最適。ライセンスは修正BSDライセンス他。
rhaco
PHPフレームワーク。WebブラウザをシミュレートするBrowserクラスや、HTMLの抽出に便利なSimpleTagクラスがある。ライセンスは修正BSDライセンス。
Snoopy
Webブラウザをシュミレートするクラス。MagpieRSSなどにも使われている。ライセンスはGPLLGPL
class_http.php
キャッシングやユーティリティメソッドを含むスクレイピングクラス。「Internet Application Code Library」にも便利なライブラリがある。ライセンスは不明。
Diggin
取得・整形・抽出の処理が全て含まれた本格的なクラスライブラリ。OOPを採用しているため柔軟性が高く、HTMLScrapingをベースにしたアダプターやZend Frameworkのライブラリが標準で含まれている。ライセンスは修正BSDライセンス他。

Digginを追加しました。

外部のリソースを取得するためのライブラリ

HTTP Class
HTTPSでの接続に対応したHTTPクラス。外部接続にはcURLかfsockopenを使用する。ライセンスは不明。
HTTP_Request
HTTPリクエストを簡単に処理できるクラス。PEARパッケージ。ライセンスはPHPライセンス。
HTTP_Client
HTTPリクエストを処理できる高機能なクラス。HTTP_Requestのラッパークラス。PEARパッケージ。ライセンスはPHPライセンス。
CURL関数
通信ライブラリであるcURLのlibcurlをPHPから使うための関数。

HTMLを修正するためのライブラリ

HTMLParser
PEARのXML_HTMLSax3を利用して、HTMLを整形式のXMLに修正するクラス。ライセンスはLGPL他。
Tidy関数
不正なHTMLを修正してくれるTidyをPHPから使うための関数。

HTMLXMLを抽出(パース)するためのライブラリ

htmlSQL
SQL風の文法でHTMLを抽出できるクラス。ライセンスは修正BSDライセンス。
HTML Parser Class
HTMLXMLもパースできるクラス。ライセンスは不明。
XML_Parser
XMLをパースするクラス。PEARパッケージ。ライセンスはPHPライセンス。
XML_HTMLSax3
不正なHTMLXMLもパースできるクラス。PEARパッケージ。ライセンスはPHPライセンス。

コメント (6)

ブックマークさせてもらいます。確かにRubyは便利そうですよね・・・。PHPから乗り換えようかな。

qirexrdさん、ブクマありがとうございます。
Rubyはおもしろそうなツールがいっぱいありますよね。
まとめ中に、これ使ってみたい、と思ったらRubyだった、というのがよくありました :(

Snoopyは”LGPL”みたいですよ。

こんばんは。
SourceForgeへの登録がGPLになってただけみたいですね。
SnoopyがLGPLなことを確認して、記事も修正しておきました。
ご指摘、ありがとうございました :)

このページを印刷しようとしましたが、背景が真っ黒です。
なんとかならないですか?
意図的でしょうか。ちょっと残念です

>このページを印刷しようとしましたが、背景が真っ黒です。

こちらでWin XP+IE/Firefox/Opera/Safariで確認した限りでは再現できなかったのですが、修正したいと思いますので、よろしければ、ご利用のOSとブラウザを教えていただければと思います。

コメントフォーム

トラックバック (2)

[…] PHPでのスクレイピングに役立つライブラリ – (DxD)∞ (tags: php api) […]

この記事のトラックバックURI
http://dxd8.com/archives/85/trackback/
この記事のURI
http://dxd8.com/archives/85/