Ruby Mechanize: Follow a Link

我只是一个虾纸丫 提交于 2019-12-22 06:48:21

问题


In Mechanize on Ruby, I have to assign a new variable to every new page I come to. For example:

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

Is there a way to run Mechanize without a variable holding every page state? like

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

回答1:


I don't know if I understand your question correctly, but if it's a matter of looping through a lot of pages dynamically and process them, you could do it like this:

    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


来源:https://stackoverflow.com/questions/6689345/ruby-mechanize-follow-a-link

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!