我使用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'))