2013-04-09 46 views
0

我使用此代码机械化使用Ruby开辟新页

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 

请注意,页面正在分配的值(页面)返回d通过表单提交。

+0

嘿,谢谢,它只有一个工作有6个字段进入结果页面,但脚本输出包含3个字段。我怎样才能休息领域也。 – 2013-04-10 01:53:18

+0

或者如果你可以尝试我需要这个输出只是不是整个页面1)火车没有2)火车名称3)登机日期4)预订状态5)你可以找到这个领域的新页面..我是新来的红宝石,并会感谢您能否提供帮助。 – 2013-04-10 02:11:38

+0

您将需要从页面上刮取数据 - 请参阅机械化指南的最后一部分(http://mechanize.rubyforge.org/GUIDE_rdoc.html)。这意味着您需要学习css-selectors和/或xpath。举例来说,你可以用'puts page.at('table.table_border')。search('.// tr [3]/td [1]')。text'来得到火车号码。 – 2013-04-10 03:50:42