【问题标题】:Mechanize parsing error机械化解析错误
【发布时间】:2012-07-16 23:13:17
【问题描述】:

我最近开始在 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运行,每次我在里面输入一些东西,页面的主要内容都会动态变化。有没有人遇到过同样的问题?

【问题讨论】:

  • 看起来您在这里有三个单独的问题;如果您可以构建一个演示第一个问题的 HTML 文件(不采用输入字段),另一个演示第二个问题的 HTML 文件(nothing to that when我转储了内容),然后肯定将 JavaScript 建议完全移至另一个问题。

标签: ruby screen-scraping mechanize


【解决方案1】:

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

【讨论】:

  • 感谢您的回答,我发现 mechanize 并不是那些 javaScript 的最佳工具。我和 Watir 一起去了,它就像一个魅力:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多