スクレイピングやる。
Tidy関数を使えるようにする
libをいれる
yum install libtidy yum install libtidy-devel
phpをリコンパイル
./configure --with-apxs2=/usr/sbin/apxs --with-pgsql --enable-mbstring --with-mcrypt --with-gd --with-zlib --with-jpeg-dir --with-png-dir --with-tidy
マニュアル
和訳されている
サービス終了のお知らせ
Tidyで要素いじりとかめんどいのかな
マニュアル読んでないからあれだけど
好み的にはTidy+SimpleXML?
結局やった方法
参考
DOM::loadHTML - 「PHPで街を育てる」の続きの続きの続き - Do You PHP はてブロ
$str = <<<EOF <p> aaaaaaaa<br/> <a href="​​http://example.com/images/upload/hogehoge.gif"​ TARGET=_blank>img</a></p> <a href="#"><img src="/images/upload/mogemoge.gif" alt="hogefuga" height="200" /></a> <img src="http://example.com/images/upload/hoge.gif" alt="hogefuga" height="200" /> <img alt="hogefuga" src="http://example.com/images/upload/12appdofoogk46_lololo3.gif" height="200" /> <div>0bbbbb</div> <img src="/images/upload/12asdoiifm346_moge3.gif" alt="hogefuga" height="200" /> <ul> <li>hogehoge</li> <li>hogehoge</li> <li>hogehoge</li> <li>hogehoge</li> <li>hogehoge</li> <ul> <li>fuga</li> </ul> <ul> <img src="/images/upload/12asdoiifm346_moge3.gif" alt="hogefuga" height="200" /> <img src="http://example.com/images/upload/12asdoiifm346_moge3.gif" alt="hogefuga" height="200" /> EOF; #Tidy用の設定 $config = array( 'indent' => false, 'output-xhtml' => true, 'clean' => true, 'quote-nbsp' => false, ); $tidy = tidy_parse_string($str, $config, 'UTF8'); $tidy->cleanRepair(); $doc = $tidy->body(); #DOMDocumentにする $dom = new DOMDocument(); $dom->loadHTML($doc); #SimpleXMLでXPathでアクセスできる $xml = simplexml_import_dom($dom); $log->log($xml->xpath('//img'));
効率がわるいようなきもしているけど、とりあえず。
実際のサイトとかを読み込んでみた
$clm = tidy_parse_string(file_get_contents('http://www.marines.co.jp/'), $config, 'UTF8'); $clm->cleanRepair(); $clmdom = new DOMDocument(); @$clmdom->loadHTML($clm); $clmxml = simplexml_import_dom($clmdom); $log->log($clmxml->xpath('//img'));
@$clmdom->loadHTML($clm);
じゃないとワーニングでちゃう。Tidyが全然意味なくなってる。
DOMDocumentつかわないいとXPathがきかない。。うむむ