Ruby 机械化解析错误

Ruby 机械化解析错误,ruby,screen-scraping,mechanize,Ruby,Screen Scraping,Mechanize,我最近开始在ruby中使用mechanize,它工作得非常好。 今天我尝试获取一个页面,但由于某些原因,输入字段未被获取,请参考以下代码: agent = Mechanize.new agent.add_auth(url, user, pass1, realm = nil, domain = nil) agent.agent.http.verify_mode = OpenSSL::SSL::VERIFY_NONE #agent.log = Logger.new(STDOUT) page = ag

我最近开始在ruby中使用mechanize,它工作得非常好。 今天我尝试获取一个页面,但由于某些原因,输入字段未被获取,请参考以下代码:

agent = Mechanize.new
agent.add_auth(url, user, pass1, realm = nil, domain = nil)
agent.agent.http.verify_mode = OpenSSL::SSL::VERIFY_NONE
#agent.log = Logger.new(STDOUT)
page = agent.get(url)

page.forms.first.field_with(:name => 'Login[username]').value=user
page.forms.first.field_with(:name => 'Login[password]').value=pass2
page = agent.submit(page.forms.first)
page = page.link_with(:text => "Search").click
page = page.link_with(:text => "Spiral").click
pp page
我试图解析的html页面包含以下行:

<input name="SpiralMatch_string" type="text" maxlength="128">

但由于某种原因,当我转储当前“页面”的内容时,与此无关


还有一件事可能是相关的,这个字段下面运行着一个java,每次我在其中键入内容时,页面的主要内容都在动态变化。有人遇到过同样的问题吗?

听起来页面可能是通过javascript或ajax调用填充的。 仅仅因为浏览器在“查看源代码”中显示了一些html,并不意味着它实际上在响应中。
您应该使用charles或fiddler之类的调试代理来查看响应的真实情况。

这里似乎有三个独立的问题;如果您可以构造一个HTML文件来演示第一个问题(不使用输入字段),另一个HTML文件来演示第二个问题(当我转储内容时与此无关),那么可能会更容易,当然,把JavaScript的建议转移到一个完全不同的问题上。谢谢你的回答,我发现mechanize并不是这些Java脚本的最佳工具。我和瓦蒂尔一起去的,它就像一个符咒:)