无法提取html表行

Ter*_* Li 4 html ruby xpath hpricot web-scraping

在此输入图像描述

我尝试提取上表中列出的所有五行.

我正在使用Ruby hpricot库使用xpath表达式提取表行.

在我的例子中,我使用的xpath表达式是/ html/body/center/table/tr.请注意,我已从表达式中删除了tbody标记,这通常是成功提取的情况.

奇怪的是,我在结果的前三行中丢失了最后两行.我只是不知道那里发生了什么.

编辑:没有任何关于代码的魔力,只需根据要求附加它.

require 'open-uri'
require 'hpricot'

faculty = Hpricot(open("http://www.utm.utoronto.ca/7800.0.html"))
(faculty/"/html/body/center/table/tr").each do |text|
  puts text.to_s
end
Run Code Online (Sandbox Code Playgroud)

qer*_*rub 9

有问题的HTML文档无效.(参见http://validator.w3.org/check?uri=http%3A%2F%2Fwww.utm.utoronto.ca%2F7800.0.html.)Hpricot以不同于浏览器的方式解析它 - 因此不同结果 - 但它不能归咎于它.在HTML5之前,没有关于如何解析无效HTML文档的标准.

我尝试用Nokogiri替换Hpricot,它似乎给出了预期的解析.码:

require 'open-uri'
require 'nokogiri'

faculty = Nokogiri.HTML(open("http://www.utm.utoronto.ca/7800.0.html"))

faculty.search("/html/body/center/table/tr").each do |text|
  puts text
end
Run Code Online (Sandbox Code Playgroud)

也许你应该转换?