机械化:从同一形式的多个提取权

Nie*_*ian 3 ruby mechanize nokogiri

我使用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
Run Code Online (Sandbox Code Playgroud)

从这篇文章,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
Run Code Online (Sandbox Code Playgroud)

或类似的东西,可能有一个css或xpath选择器.

Kri*_*ris 6

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

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