URLとXPathを渡すと値を返すツールをもっと極悪ぶっこ抜きができるツールに改造してる

jottitのほうに公式ページをつくりました。

値がとれるだけでは退屈、ページ辿りたいし、その先も辿りたいので機能追加。ずいぶんたくましくなりました。あとはキャッシュができればいいですねー。

追加したオプション

n
次のページ(別に次じゃなくてもいいけど)のURLを返してくれるXPath、いっぱいマッチさせても最初の1つしかたどりません
d
ページを辿る回数、デフォルト1
s
HTML::Elementがマッチしてる場合にHTMLソースを吐く
f
処理しているURLも出力し、結果の値の前にはタブがついているフォーマット(いまひとつなのでなんとかしたい)
URLのかわりに-
標準入力から改行区切りでURLをうけとる

ためす

twitterのfollowingリストを0回ページ継ぎ足しして、そこから抽出したユーザリストのfavoritesをさらに確認、彼らのfavってるユーザ名を集計する。

% alias exthtml="perl /Users/ec/bin/exthtml.pl -a Mozilla -c ~/Library/Cookies/Cookies.plist"
% exthtml -X '//strong/a[@rel="contact"]/@href' -n "//a[contains(@rel, 'next')]/@href" \
-d 0 http://twitter.com/friends | perl -ne 'chomp;print "${_}/favourites\n"' | \
exthtml -X '//*[@class="content"]/strong/a/text()' -s - | sort | uniq -c
   5 33
   1 4316
   1 8am
   1 941
   1 AirReader
   2 Hamachiya2
   1 IronNine
   1 Johnny_S
(snip)   
   1 yoppy
   6 youpy
   1 yugui
   2 yuiseki
   3 yukichi
   1 yusukebe
   2 yuyarin
   1 yuzupepper
   1 zammersonic

もちろん前のほうのexthtmlの-dをふやせばfollowing全員たどれるし、後のほうのexthtmlに-n、-dをつければどんどん深く辿れてべんり。両方-d 10000ぐらいにしたら過去のfavoritesぜんぶとれます。だけどtwitterのサーバは貧弱なのであんまり叩くと死にそうでこわいですね。