id:kkobayashi_a:20060406#p1の続き。各タイトルについてはてなのキーワードを検索しようと思うんだけど、さすがに手動でいちいち打ち込むのはめんどいので、クエリー文字列を自動生成することにします。
use strict; use Encode::Guess qw /euc-jp shiftjis 7bit-jis/; my $str = $ARGV[0]; $str =~ s/%([0-9A-Fa-f][0-9A-Fa-f])/pack('H2', $1)/eg; print "argv : $ARGV[0]\n"; print "decoded : $str\n"; print "encoding: ". Encode::Guess::guess_encoding($str)->name . "\n";
まず適当な言葉で検索してみて、文字列のエンコーディングを調べてみる。
$ perl dec.pl http://search.hatena.ne.jp/keyword?word=%C8%FE%C6%FD | nkf -s argv : http://search.hatena.ne.jp/keyword?word=%C8%FE%C6%FD decoded : http://search.hatena.ne.jp/keyword?word=美乳 encoding: euc-jp
EUCらしい。ちなみに、別に美乳が好きなわけではありません*1。好きだけど。
で
作った。
use strict; use URI::Escape; use LWP::Simple; while(<>){ tr/\x0A\x0D//d; my $url = 'http://search.hatena.ne.jp/keyword?word=' . URI::Escape::uri_escape($_); foreach(grep(/<h3>/, split(/\n/, get($url)))){ m|<h3><a href="http://d.hatena.ne.jp/keyword/(.*?)">|; print "$1\n"; } }
EUCでキーワード候補を書いたファイルを読み込ませて、キーワード検索の結果を出力。Perlはこういうクイックハックにはぴったりだよなあ。大きなプログラム書くと混乱するけど・・・
*1:暇な人は「美乳テーブル」でぐぐってみてください