WWW::Mechanizeで青空文庫の一覧を得る
[Ruby] 青空文庫の作品一覧のhtmlファイルを配列として得る
http://rubyist.g.hatena.ne.jp/muscovyduck/20070205/p1
をWWW::Mechanizeを使ってやりました。
require 'rubygems' require 'mechanize' $KCODE = 'utf-8' agent = WWW::Mechanize.new page = agent.get('http://www.aozora.gr.jp/index_pages/index_top.html') aiu_links = page.links.select {|link| link.href =~ /\Asakuhin_[a-z]+\d+\.html\z/ } aiu_indices = aiu_links.map {|link| link.href } aiu_links.each do |link| sleep 30 # 追記 aiu_indices.concat(link.click.links \ .select {|l| l.href =~ /\Asakuhin_[a-z]+\d+\.html\z/ } \ .map {|l| l.href }.uniq) end p aiu_indices.uniq.sort
コードはシンプルに書けるのだけどWWW::Mechanizeは遅すぎ。あとオブジェクトの出力が見づらすぎる。Formを操作したり,User-Agentをごまかしたりするには有用なライブラリなだけにそこが何とかならないかなぁ…。
追記
ちょっとマナー違反だった。aiu_links.eachのブロック内でsleep(30)とかしないと…。