为什么我不能达到这个div?

时间:2013-06-22 02:37:57

标签: html ruby nokogiri

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

当我检查要捕获的元素时,我发现它位于带有<div>的{​​{1}}内。

然而,我得到了这个:

id="data_i84"

当我“查看页面来源”并搜索“irb> doc.css("#data_i84") => [] ”时,它不会显示。

我有什么东西在这里缺失。我认为这是直截了当的。

1 个答案:

答案 0 :(得分: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.