HTMLタグの入れ子を間違えるなー。あとXPathは便利だけどちょっと遅い
とあるサイトのフィードを全文で読みたいので、XPathで//div[@class="blogbody"]
と指定したけど、1個だけきちんと全文取得できてないエントリがある。おかしいなと思って、そのエントリのHTMLソースを読んでみたら、
<div class="blogbody"> <p><div class="quote">ほげほげ</p> <p>ふがふが</div></p> </div>
これ、HTMLタグの入れ子関係があきらかに間違ってるじゃないか…。
<div class="blogbody"> <div class="quote"> <p>ほげほげ</p> <p>ふがふが</p> </div> </div>
正しくはこうだよね。入れ子が間違ってるからXPathで正しく切り出せない。しょうがないからXPathを使うのはあきらめて正規表現で切り出すようにしたけど、速度が目に見えて違う正規表現のほうがちょっと早い。キャッシュが効いてるから、これはネットワークアクセスの差じゃないと思う。いったんツリーを構築してから抜き出すXPathとコアに組み込まれてる正規表現の速度差かなぁ。まあ、そんなことあんまり気にもしないけどね。やっぱり楽に書きたいし。あー、けどXPath一発ならともかく、XPathで切り出してextract_after_hook
するくらいなら最初から正規表現でやったほうがいいかな。そのうち書き直していこう。