HTMLScrapingかhtmlSQLか、それが問題
正規表現ぶんまわしでのスクレイピングは、やっていて鬱々としてきます(試行錯誤が多すぎ)。
一段落したのを機に、ライブラリ等を使って処理をパターン化することにします。
▽[php]スクレイピングならHTMLScraping→SimpleXML→xpath (うえちょこ@ぼろぐ)
http://labs.uechoco.com/blog/2009/01/php-%E3%82%B9%E3%82%AF%E3%83%AC%E3%82%A4%E3%83%94%E3%83%B3%E3%82%B0-htmlscraping-simplexml-xpath.html
あたりを読みながら、手段を検討しました。
Tidy関数は、今のレンタルサーバに入っていないこと、他のレンタルサーバに移動する可能性もあるもののおそらく以前のように専用サーバを借りてごりごりやることは考えにくいことから使える可能性の方が低いので使用を断念。
そうすると使える手段は急に限られてくるのですね。悩む必要がすくなくなりました。
HTMLScrapingか以前触れたhtmlSQLか。
HTMLScrapingは2年前に書かれたもので最近話題にならないから参考になる記事が乏しい(なにせ私はコピペではじめるphp入門ってレベルなもので、ないとつらいんです^^;;)。一方、XML化するため、一度XML化すれば内容を取得する方法はいたってシンプル。
htmlSQLは前者と比較すると最近話題になったものなので、使用例がそれなりに書かれていて参考になる記事は多いが、XML化という手順をふまない分シンプルなものの、内容を取得する方法はSQLっぽくなっており、シンプルではない(単に私がSQLの作法になれていないから、という理由もあります)。
そこで、まずは前者に挑戦することにしました。
▽HTMLをXML化してDOMやXPathで操作するWebスクレイピング用PHPクラス
(Under Construction, Baby)
http://www.rcdtokyo.com/ucb/contents/i000851.php
▽HTMLScraping Class ReadMe (alpha)
http://www.rcdtokyo.com/etc/htmlscraping/
上が紹介ページ、下が配布ページでどちらもHTMLScrapingの作者さんのページ。作者さんは既にHTMLParserを作っていて、マークアップの補正はこれを使って実現しています。「マークアップの補正機能は、PHPでは、PECL拡張モジュール版のTidyなどを利用できますが、残念ながらこれらは、現在の一般的なレンタルサーバのPHP環境では必ずしも用意されているわけではありません。このスクリプトベースのクラスライブラリは、このようなバイナリ拡張モジュールが利用できない環境で、マークアップの補正を行う際の補助となることを意図」していることで、どんぴしゃですね。ありがたやありがたや。
▽HTMLを整形式のXML文書に修正するPHPクラス (HTMLParser)
(Under Construction, Baby)
http://www.rcdtokyo.com/ucb/contents/i000799.php
まずは、配布ページからライブラリをダウンロードして、自分のサイト上に展開してみます。
その上で、展開先の以下のURLを開く、と。
http://www.example.com/htmlscraping/examples/test_ajax.html
そうすると紹介ページの「AjaxによるScrapingの簡単なサンプル」が自分のサイト上で開くので、「クエリ送信」。ちゃんと動作しますね。
これだけでも結構面白い(^_^)
あとはこれを紐解いていけばいいんですね。
紹介ページによれば、リクエスト先であるPHPで、HTMLScraping->getXmlObject()を呼んでいると。これが「第1パラメータのURLで取得したHTMLソースから生成したSimpleXMLオブジェクトを返」すから、返り値を操作していけばいいわけですね。パラメータの詳細は、配布ページをみると。
……………紹介ページに全部書いてありますね(^^;)
誰だ、「参考になる記事が乏しい」とかいったやつは(ごめんなさい)。
htmlSQLはもう少しSQLと仲良くなってから、挑戦してみたいと思います。HTMLScrapingよりもお得な場面もあるだろうし。
▽htmlSQLでモバイルSEOを簡単にシステムツール化して管理する(
(携帯サイトをつくろう。)
[http://www.plusmb.jp/2009/01/30/2378.html:title=http://www.plusmb.jp/2009/01/30/2378.html
▽htmlSQLの基本的な使い方 (floatingdays)
[http://fdays.blogspot.com/2008/04/htmlsql.html:title=http://fdays.blogspot.com/2008/04/htmlsql.html
▽ニュースサイトを解析…htmlSQLを使ってみる (WebLab.ota)
http://d.hatena.ne.jp/n_euler666/20071114/1195054549
▽htmlsqlが会社ではやって?いるのかな(ニート=>(vb=>..なんて無かった)=>ネトゲ屋)
http://d.hatena.ne.jp/cast_everything/20090607