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 に答える