2016-04-04 8 views
0

Rubyのmechanize gemでlink_with関数を使用する方法を理解しようとしています。私がダウンして、基本的な考え方を持っている:機械化されたGoogleページをクリック

page = <site> 
blah blah blah 
next_page = page.link_with(:text => "Next") 
page = link.click 

それは私が少しテストでこれを使用する場合、それは非常にゆっくり行くようですが、私は何を抱き合わせてることはグーグルの最初の10ページをループであり、 time変数が10からカウントダウンする変数timeを持つloop doを使用しています。time変数が0になると、プログラムがループから抜け出すことを望みます。それは動作しているようだが、それはGoogleの最初のリンクを引っ張って、そこにしか座っていない。

出典:

require 'mechanize' 
require 'uri' 

SEARCH = "test" 

@agent = Mechanize.new 
page = @agent.get('http://www.google.com/') 
google_form = page.form('f') 
google_form.q = "#{SEARCH}" 
url = @agent.submit(google_form, google_form.buttons.first) 
    url.links.each do |link| 
    if link.href.to_s =~ /url.q/ 
     str = link.href.to_s 
     str_list = str.split(%r{=|&}) 
     urls = str_list[1] 
     urls_to_log = URI.decode(urls) 
     puts urls_to_log 
     time = 10 
     loop do 
     next_page = page.link_with(:text => 'Next') 
     page = link.click 
     time -= 1 
     end 
     if time == 0 
     break 
     end 
    end 
    end 

私は、参照hereのビットを発見しました。しかし、それは私が理解する点でそれを実際に説明していない。

これは最初のリンクに配置されていてどこにもどこに間違っていますか?

+0

は、GoogleのAPIを使用してに見たことがありますか?あなたのページを掻き分けているなら、あなたのIPを禁止する確率は良いです。 –

+0

私は禁止について心配していません。その周りに方法があります。リンクをクリックする方法を理解しようとしています。 – 13aal

+0

多くの混乱がここにあります。 'next_page'はリンクであり、ページではないので、私はソートを開始します。 – pguardiario

答えて

1

あなたがNextリンクをたどるためにやらなければならないことは、のようなものです:

while page = page.link_with(:text => 'Next').click 
    # do something with page 
end 
関連する問題