机械化:从多个相同的表单中选择正确的提交



我使用Mechanize循环遍历已分页的表。

我有一个持有多个提交输入的表单的问题。输入标记用作分页,并且是动态生成的。当我循环遍历需要抓取的页面时,我需要能够选择正确的输入,因为只有其中一个将带我到"下一页"。正确的标签可以通过不同的属性来识别,比如名称、类、值等。但我的问题是,我不知道如何告诉mechanize该使用哪一个。

我试过了:

require 'mechanize'
require 'yaml'
url = "http://www.somewhere.com"
agent = Mechanize.new
page = agent.get(url)
loop do
  puts "some content from site using nokogiri"
  if next_page = page.form_with(:action => /.*/)
    page = next_page.submit(page.form_with(:action => /.*/).submits[3])
  else
    break
  end
end

从这个帖子,http://rubyforge.org/pipermail/mechanize-users/2008-November/000314.html,但被告知标签的数量是不断变化的,所以只是选择一个硬编码的提交数不是一个太好的主意。

我想知道是否有这样一种方法:

loop do
  puts "some content from site using nokogiri"
  if next_page = page.form_with(:action => /.*/)
    page = next_page.submit(:name => /the_right_submit_button/)
  else
    break
  end
end

或类似的东西,可能有CSS或xpath选择器

我通常使用form.button_with选择右键点击:

form = results_page.forms[0]
results_page = form.submit(form.button_with(:name=>'ctl00$ContentBody$ResultsPager$NextButton'))

相关内容

  • 没有找到相关文章

最新更新