html - 使用 Ruby 从登录可访问网页后 javascript 中提取值

标签 html ruby nokogiri watir hpricot

我有一个股票交易网站,只有登录后才能访问。登录后,我试图提取一个股票值(value)。该号码不是现成的,需要一段时间才能加载,因为它正在从公司的数据库中更新。

我正在尝试用 Ruby 编写一个脚本,允许我提取数字,然后在我的程序中使用它。

在 Firebug 中,标签看起来像这样,但只有在数字加载之后:

<span id="ContentPlaceHolderTodaysStock">10,747</span>

我研究过 hpricot 和 nokogiri 等库,并尝试过类似于以下的代码:

require "nokogiri"
require "open-uri"
doc = Nokogiri::HTML(open("website.com/stocks"))
puts doc.xpath("//span/text()")

我遇到的问题是 1)它只从登录页面“website.com”而不是“website.com/stocks”读取 html 2) 一旦我通过了登录,我如何在 javascript 加载后使用 html 代码?

我也尝试过 Watir 这样可以让我解决问题 #1 但随后做​​类似下面的事情对问题 #2 没有帮助,因为它提供了原始的 html 源...

require 'net/http'
source = Net::HTTP.get("website.com/stocks", '/')

如果您能帮助解决这个问题,我们将不胜感激。谢谢!

最佳答案

既然您可以使用 Watir 登录,您也可以使用它来从页面上获取文本。 Watir 具有用于等待异步组件加载的内置方法 - 请参阅 http://watirwebdriver.com/waiting/ .

要获取文本,您需要这样的东西:

puts browser.span(:id => 'element_id').when_present.text

关于html - 使用 Ruby 从登录可访问网页后 javascript 中提取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15369469/

相关文章:

html - 如何垂直对齐td标签中的元素

javascript - 是否可以将github网页连接到SQL数据库?

ruby-on-rails - 测试 Nokogiri XML 的属性

html - 查找和替换 HTML 标签

ruby - Nokogiri模式限制

javascript - 航点删除类

javascript - Cordova/HTML 5 中的地理定位与 Meteor 地理定位包有何区别?

ruby-on-rails - @x ||= 是否像 return @x if @x.present 一样工作?

ruby - 现在有哪些选项可以在 Ruby 和 RoR 中实现 UTF8?

ruby-on-rails - MacVim 中类似 Command - R 的功能