【发布时间】:2013-11-11 20:30:50
【问题描述】:
我正在尝试从this 页面的最新日期(表格的第一行)抓取数据 URL 链接。表格的内容似乎是由 JavaScript 函数生成的。
我尝试使用 Nokogiri 来获取它,但 Nokogiri 无法抓取 JavaScript。然后,我尝试仅使用 Nokogiri 获取脚本部分:
url = "http://www.sgx.com/wps/portal/sgxweb/home/marketinfo/historical_data/derivatives/daily_data"
doc = Nokogiri::HTML(open(url))
js = doc.css("script").text
puts js
在输出中,我找到了我想要的类名称为sgxTableGrid 的表。但是,问题是JavaScript函数中没有关于数据URL链接的线索,并且一切都是动态生成的。
有人知道解决这个问题的更好方法吗?
【问题讨论】:
-
您必须以某种方式运行该页面,让它动态生成,然后将 DOM 作为 HTML 以使用 Nokogiri 进行解析。
-
您还需要另一种技术,例如无头浏览器:phantomjs
-
祝你好运。要么代码被故意混淆,要么犯下此问题的开发人员头脑非常非常复杂
-
@tihom,因为 Mechanize 的胆量 ARE Nokogiri,Mechanize 对 JavaScript 代码的作用不亚于 Nokogiri。为此,有两种选择,使用 WATIR 驱动的浏览器或 JavaScript 解释器,或者拉入代码并手动跟踪它以找出检索 JSON 的 URL 是如何生成的。
标签: javascript ruby nokogiri scrape