Pixel Pedals of Tomakomai

北海道苫小牧市出身の初老の日常

HTML::TreeBuilder

先ほどのLinkShareなショートカットを作るきっかけとなったモジュールがHTML::TreeBuilder。HTMLをツリー化して、扱うもので、エレメント単位の検索ができる。例えば、



<a href="product.cgi?id=XXX">  <img src="商品URL1"> <b>商品名1</b> </a>
・・・
<a href="product.cgi?id=XXX"> <img src="商品URLn"> <b>商品名n</b> </a>





なんて構造のURLがあった場合、



@products = $tree->look_down('href', qr/product\.cgi\?id=\w+/);
foreach(@products){
print 'TITLE:' , $_->find('b')->as_text(), "\n";
print 'IMAGE:' , $_->find('img')->attr('src'), "\n";
}





と、多少のデータ構造の変更にも耐えれるし、それよりもなによりも、気持ちよく書ける