2011-07-14 3 views
5

RubyのMechanizeでは、私が来るすべての新しいページに新しい変数を割り当てる必要があります。例:Ruby Mechanize:リンクに従います

page2 = page1.link_with(:text => "Continue").click 
    page3 = page2.link_with(:text => "About").click 
    ...etc 

すべてのページ状態を保持する変数なしでMechanizeを実行する方法はありますか?以下のような私が正しくあなたの質問を理解していれば

my_only_page.link_with(:text => "Continue").click! 
    my_only_page.link_with(:text => "About").click! 

答えて

10

は私は知りませんが、それは動的にページの多くをループの問題だし、それらを処理する場合、あなたはこのようにそれを行うことができます:

require 'mechanize' 

    url = "http://example.com" 
    agent = Mechanize.new 
    page = agent.get(url) #Get the starting page 

    loop do 
     # What you want to do on the page - ex. extract something... 
     item = page.parser.css('.some_item').text 
     item.save 

     if link = page.link_with(:text => "Continue") # As long as there is still a nextpage link... 
     page = link.click 
     else # If no link left, then break out of loop 
     break 
     end 
    end 
+2

素晴らしい答えこれも私が探していたものです。私はそれを持っていましたが、あなたのコードは私の方法よりはるかに良くなりました。 – LF4

関連する問題