我正在尝试使用 Nokogiri 和 Ruby 1.9.3 抓取包含财务数据的页面。
我无法使用正确的 XPath 或 CSS 过滤器来获取保存数据的表,然后遍历数据并组装它,以便可以将输出放入 CSV 文件中,如下所示:
Date, Company,Symbol,ReportedEPS,Consensus EPS
20130828,CDN WESTERN BANK,CWB.TO,0.60,0.59
我使用 Firebug 获取 XPath 和 CSS 数据。 XPath 或 CSS 的正确格式是什么来提取表格然后遍历行以将它们组合起来输出到文件?
require 'rubygems'
require 'mechanize'
require 'nokogiri'
require 'uri'
@agent = Mechanize.new do|a|
a.user_agent_alias = "Windows IE 6"
end
url = "http://biz.yahoo.com/z/20130828.html"
page = @agent.get(url)
doc = Nokogiri::HTML(page.body)
puts doc.inspect
#~ from firebug
#~ xpath /html/body/p[3]/table/tbody
#~ css html body p table tbody
最佳答案
一些浏览器会添加一个<tbody>
到 <table>
当他们解析/验证/修复传入的 HTML 时。 Firefox 就是其中的一种浏览器。您从 Firefox 中获取的 XPath 和 CSS 表达式是针对 Firefox 所见的 HTML,而这不一定是 Nokogiri 所见的 HTML。
删除 <tbody>
并试试这个 XPath:
/html/body/p[3]/table
定位表格。您还可以查看原始 HTML 并查看是否有 id
属性或 class
可以与 CSS 一起使用的表格属性 id
( #the-id
) 或类 ( .the-class
) 选择器而不是元素的大路径。
关于css - 我如何在 Nokogiri 中指定 XPATH 或 CSS 来抓取页面的表格数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20208131/