Я использую Механизировать, чтобы перебрать таблицу, которая разбита на страницы.
У меня проблема с формой, которая содержит несколько отправленных входных данных. Входные теги используются как нумерация страниц и генерируются динамически. Когда я перебираю страницы, которые мне нужно почистить, мне нужно иметь возможность выбрать правильный ввод, поскольку только одна из них приведет меня к «следующей странице». Правильный тег может быть идентифицирован по различным атрибутам, таким как имя, класс, значение и т. Д. Однако моя проблема в том, что я не могу понять, как указать механизму, какой из них использовать.
Я пробовал это:
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.