mechanize:GUIDE:Finding Links
まんま
>> require "mechanize" => true >> agent = Mechanize.new => #<Mechanize:0xb748b928 ... > >> page = agent.get('http://google.com/') => #<Mechanize::Page ... >> page.links.each do |link| ?> puts link.text >> end 画像 動画 地図 ニュース 書籍 Gmail その他 ... iGoogle 設定 ログイン 検索オプション 言語ツール 広告掲載 Google について Google.com in English プライバシー => [#<Mechanize::Page::Link ... ] >> page = agent.page.links.find { |l| l.text == 'News' }.click NoMethodError: undefined method `click' for nil:NilClass from (irb):7 >> page = agent.page.links.find { |l| l.text == 'ニュース' }.click => #<Mechanize::Page ... >> page = agent.page.link_with(:text => 'ニュース').click NoMethodError: undefined method `click' for nil:NilClass from (irb):9 from :0 >> agent.page.links_with(:text => 'ニュース')[1].click NoMethodError: undefined method `click' for nil:NilClass from (irb):10 from :0
- 「page = agent.page.link_with(:text => 'ニュース').click」はファイルでスクリプトを書いたら大丈夫だった
- 「agent.page.links_with(:text => 'ニュース')[0].click」ならファイルでスクリプトを書いたら大丈夫だった
- スクリプトで実行した時には、UTF-8 で書いて、-Ku をつけて実行
require "mechanize" agent = Mechanize.new agent.get('http://google.com/') page = agent.page.links.find { |l| l.text == 'ニュース' }.click p page
で、
#<Mechanize::Page ...
require "mechanize" agent = Mechanize.new agent.get('http://google.com/') p agent.page.link_with(:text => 'ニュース').click
で、
#<Mechanize::Page ...
require "mechanize" agent = Mechanize.new agent.get('http://google.com/') p agent.page.links_with(:text => 'ニュース')[0].click
で、
#<Mechanize::Page ...
require "mechanize" agent = Mechanize.new agent.get('http://google.com/') p agent.page.link_with(:text => 'ニュース').click.link_with(:href => '/news/section?pz=1&cf=all&ned=jp&topic=t&ict=ln')
で、
#<Mechanize::Page::Link "" "/news/section?pz=1&cf=all&ned=jp&topic=t&ict=ln">
require "mechanize" agent = Mechanize.new page = agent.get('http://google.com/') p page.link_with(:text => 'ニュース', :href => 'http://news.google.co.jp/nwshp?hl=ja&tab=wn')
で、
#<Mechanize::Page::Link "ニュー\343\202\271" "http://news.google.co.jp/nwshp?hl=ja&tab=wn">