« YouTubeが顔を自動でぼかしてくれる! ただし効果はもうちょい? それイラストだよ! | トップページ | OS X Mountain Lionが7月25日発売 »

2012年7月24日 (火曜日)

PHP Simple HTML DOM Parserではまる- 拾えない属性が

 HTMLをパースするライブラリがある。それを使ってて非常に困る状況に陥ったのだけど、実際はカンタンな原因だったという話。

 PHP Simple HTML DOM Parserはてなブックマーク - PHP Simple HTML DOM Parser

 このライブラリのすばらしいところはなんといっても、jQueryのようにセレクターでDOMの要素の指定とかができる点(言葉の使いかたが正しいかどうかはちょっとわからない)。

 JavaScriptでjQueryを使い始めて、「なんでPHPはこんなふうにカンタンにできないんだ!」と思っていた自分にはとっても便利で合理的なものに思えたものです。それまでは正規表現使ったり(面倒!)、Dapper使ったり(不安定!)、Yahoo! Pipes使ってみたりいろいろやってのですが(そう、スクレイピングですよ、やってのは)、もうこれ以外は使えないと思ったのでした。

 そういえば、phpQueryってのを使ったこともあったのですが、なぜかやめました。その原因はもう思い出せません。まあ、それは今回関係無いです。

 で、PHP Simple HTML DOM Parserでうまいこと属性が拾えないという現象が発生。何度ソースを見てもそれは存在するのに!

 で、悩むこと数時間。

 よく見たら見逃しがあった(そりゃそうだ)。対象となるHTMLがちょっとおかしかったのだった。その例はこういうやつ。

<a target="_blank"class="sample" href="htttp://example.com/" target="_blank">ほにゃらら</a>

 このaタグ自体は拾える。しかし、href属性の内容が拾えない。ほかのは? と思って調べる。targetは拾える。classは拾えない。なぜだ?

 もう一度よくソースを見る。

 classの前にあるべき空白がない。このせいで、target以外(以降というべきか)の属性が拾えないのだった。

 IEの開発ツールでDOMを見てもわからないはずだ。

 ということで、今後同様のことがあったときのためにメモ。
 

 あっ、基本的な使いかたとかは以下を参照ください。


|

« YouTubeが顔を自動でぼかしてくれる! ただし効果はもうちょい? それイラストだよ! | トップページ | OS X Mountain Lionが7月25日発売 »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/35726/55272474

この記事へのトラックバック一覧です: PHP Simple HTML DOM Parserではまる- 拾えない属性が:

« YouTubeが顔を自動でぼかしてくれる! ただし効果はもうちょい? それイラストだよ! | トップページ | OS X Mountain Lionが7月25日発売 »