PHPでのスクレイピングに役立つライブラリ
APIが提供されていないサービスから欲しい情報だけを取得するには、HTMLなどから自前でスクレイピングを行うしかありません。PHPでのスクレイピングに役立つライブラリなどをまとめてみました。
PerlやRubyには色々と便利そうなものが見つかるのですが、PHPにはなかなかこれといったものがないですね。
Webスクレイピングライブラリ
- HTMLScraping
- HTMLをXML化して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から使うための関数。
HTMLやXMLを抽出(パース)するためのライブラリ
- htmlSQL
- SQL風の文法でHTMLを抽出できるクラス。ライセンスは修正BSDライセンス。
- HTML Parser Class
- HTMLもXMLもパースできるクラス。ライセンスは不明。
- XML_Parser
- XMLをパースするクラス。PEARパッケージ。ライセンスはPHPライセンス。
- XML_HTMLSax3
- 不正なHTMLやXMLもパースできるクラス。PEARパッケージ。ライセンスはPHPライセンス。
コメント (6)
qirexrdさん、ブクマありがとうございます。
Rubyはおもしろそうなツールがいっぱいありますよね。
まとめ中に、これ使ってみたい、と思ったらRubyだった、というのがよくありました 🙁
Snoopyは”LGPL”みたいですよ。
こんばんは。
SourceForgeへの登録がGPLになってただけみたいですね。
SnoopyがLGPLなことを確認して、記事も修正しておきました。
ご指摘、ありがとうございました 🙂
このページを印刷しようとしましたが、背景が真っ黒です。
なんとかならないですか?
意図的でしょうか。ちょっと残念です
>このページを印刷しようとしましたが、背景が真っ黒です。
こちらでWin XP+IE/Firefox/Opera/Safariで確認した限りでは再現できなかったのですが、修正したいと思いますので、よろしければ、ご利用のOSとブラウザを教えていただければと思います。
トラックバック (2)
[…] PHPでのスクレイピングに役立つライブラリ – (DxD)∞ (tags: php api) […]
[…] https://dxd8.com/archives/85/ […]
ブックマークさせてもらいます。確かにRubyは便利そうですよね・・・。PHPから乗り換えようかな。