使用Nokogiri以奇怪的编码解析HTML

时间:2012-10-30 09:16:57

标签: html ruby parsing nokogiri

我无法使用XPath,因为编码变得奇怪。我希望你能帮我摆脱这个麻烦。

require "Nokogiri"
require "open-uri"
link = "http://www.arla.dk/Services/SearchService.asmx/RecipeResult?q=allRecipe&paging=6&include=&exclude=&area=recipeSearch&languageBranch=da"
doc = Nokogiri::HTML(open(link))
doc.xpath("//h2")

xpath方法返回一个空数组。看起来该文档尚未正确解析。我认为这是由于被解析的文件包含编码字符:

<strong>Frokost til 8</strong>
<ul><li class='ingHeading'><strong><b>Flade

2 个答案:

答案 0 :(得分:1)

响应是XML所以首先用Nokogiri :: XML解析它:

xml = Nokogiri::XML open(link)

然后第一个字符串包含一些HTML,所以使用Nokogiri :: HTML

进行解析
doc = Nokogiri::HTML xml.at('string').text

现在你可以进行搜索了:

doc.xpath '//h2'

答案 1 :(得分:0)

如上所述,问题在于HTML是编码的,这就是你看到转义序列的原因;例如,&lt;而不是<。为了解决这个问题,请浏览HTML。

How do I encode/decode HTML entities in Ruby?基本上建议使用htmlentities