使用Nokogiri解析带有奇怪编码的HTML

使用Nokogiri解析带有奇怪编码的HTML,html,ruby,parsing,nokogiri,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:

我不能使用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

如上所述,问题在于HTML是经过编码的,这就是为什么会看到转义序列;例如,
而不是
响应是XML,因此首先用Nokogiri::XML解析它:

xml = Nokogiri::XML open(link)
然后第一个字符串包含一些HTML,所以用Nokogiri::HTML解析它

doc = Nokogiri::HTML xml.at('string').text
现在您可以进行搜索:

doc.xpath '//h2'

这不是nokogiri的问题,这是源数据的问题,它被编码为一个长字符串。有趣的是,我会看看是否能找到转换它的工具。你知道吗?谢谢你的帮助:)