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">