我正在使用Nokogiri解析此页面:http://financials.morningstar.com/income-statement/is.html?t=GE®ion=USA&culture=en-us
当我检查要捕获的元素时,我发现它位于带有<div>
的{{1}}内。
然而,我得到了这个:
id="data_i84"
当我“查看页面来源”并搜索“irb> doc.css("#data_i84")
=> []
”时,它不会显示。
我有什么东西在这里缺失。我认为这是直截了当的。
答案 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®ion=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.