スクレイピングやる。

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="&#8203;&#8203;http://example.com/images/upload/hogehoge.gif"&#8203; 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がきかない。。うむむ