0

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

2 回答 2

1

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

xml = Nokogiri::XML open(link)

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

doc = Nokogiri::HTML xml.at('string').text

现在您可以进行搜索:

doc.xpath '//h2'
于 2012-10-30T10:09:49.027 回答
0

如上所述,问题在于 HTML 已编码,这就是您看到转义序列的原因;例如,&lt;代替<. 要绕过它,请对 HTML 进行转义。

如何在 Ruby 中编码/解码 HTML 实体?基本上建议使用htmlentities

于 2012-10-30T10:00:46.057 回答