css - 我如何在 Nokogiri 中指定 XPATH 或 CSS 来抓取页面的表格数据?

标签 css ruby xpath nokogiri

我正在尝试使用 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/

相关文章:

java - Selenium 网络抓取信息到列表中

center - 无法将文本居中

javascript - 如何防止浏览器绘制的 img 不可见?

ruby - FactoryGirl create_list 传入多个值

json - 打开 json 字符串以便在 ruby​​ 中轻松读写

r - 使用 R 中的 Xpath 根据另一个属性及其父属性获取节点的属性

css - SVG 不会留在 Firefox 中的 <div> 中

javascript - 悬停时的 CSS Matrix3D 变换

ruby - 在 Sinatra 应用程序中维护单一、持久的 EM 连接

java - 如何等待项目完成加载?