1

我正在使用 Nokogiri 解析此页面: http: //financials.morningstar.com/income-statement/is.html? t=GE®ion=USA&culture=en-us

当我检查要捕获的元素时,我发现它在<div>with的内部id="data_i84"

但是,我得到了这个:

irb> doc.css("#data_i84")
=> []

当我“查看页面源代码”并搜索“ data_i84”时,它不会出现。

有什么我在这里想念的吗?我认为这将是直截了当的。

4

1 回答 1

4

抓取 Ajax 数据只需找到正确的 URL,然后找出解析响应的正确方法:

require 'nokogiri'
require 'open-uri'
require 'json'

# you can find the ajax url in your browser's network tab, or use a debugging proxy like charles or fiddler
ajax_url = 'http://financials.morningstar.com/ajax/ReportProcess4HtmlAjax.html?&t=GE&region=usa&culture=en-US&cur=USD&reportType=is&period=12&dataType=A&order=asc&columnYear=5&rounding=3&view=raw&r=356282&callback=jsonp1371870522408&_=1371870527498'
response = open(ajax_url).read

# here's how you parse jsonp data
json = JSON.parse response[/{.*}/]

# the html is in a field called result
doc = Nokogiri::HTML json['result']

doc.css("#data_i84") # now you should see it.
于 2013-06-22T04:11:09.737 回答