2013-04-09 2 views
0

Я использую этот кодMechanize с помощью рубинового открыть новую страницу

require 'rubygems' 
require 'mechanize' 

agent = Mechanize.new 
page = agent.get('http://www.indianrail.gov.in/pnr_Enq.html') 
form = agent.page.forms[0] 
print agent.page.forms[0].fields 
# in this i get filed as lccp_pnrno1 
agent.page.forms[0]["lccp_pnrno1"] = "4150702245" 
button = form.button_with(:value => "Get Status") 
agent.submit(form, button) 
pp pages 

В идеале, приведенный выше код должен сначала ввести 10-значный номер. , нажмите на кнопку получения статуса, она должна дать новую страницу, поэтому нужна новая страница, которая дает информацию. Но мой вывод - только первая страница. Так что у меня есть два сомнения здесь:

1) как проверить, подается или нет.

2) Второй способ печати следующей страницы после отправки формы, поскольку страница pp печатает только последнюю страницу.

ответ

1

Когда вы

pp page 

page еще со ссылкой на исходную страницу, которая отводилась ему в

page = agent.get('http://www.indianrail.gov.in/pnr_Enq.html') 

Вам необходимо обновить page после отправки формы:

page = agent.submit(form, button) 
pp page 

Обратите внимание, что странице присваивается значение (страница) returne d путем представления формы.

+0

Привет, это работает еще одна вещь, есть 6 полей, которые попадают в результирующую страницу, но вывод сценария содержит 3 поля. Как я могу также использовать поля для отдыха. –

+0

, или если бы вы могли попробовать, мне нужен Этот вывод только не для всей страницы 1) Поезд нет 2) Имя поезда 3) Дата посадки 4) Статус бронирования 5) Чтобы вы могли найти это поле на новой странице, я новичок в рубине и буду оцените, если вы можете помочь. –

+0

Вам нужно будет очистить данные со страницы - см. Последний раздел руководства по механизации (http://mechanize.rubyforge.org/GUIDE_rdoc.html). Это означает, что вам нужно будет изучить css-селекторов и/или xpath. Например, вы можете получить номер поезда с помощью 'puts page.at ('table.table_border'). Search ('.// ​​tr [3]/td [1]'). Text'. –

Смежные вопросы