我有一个 html 元素,例如:
<div id="spam[500]">
我想通过 id 搜索这个元素,但似乎 nokogiri 被 [] 弄糊涂了。我正在努力:
doc.css("#spam[#{eggs.id}]")
但无济于事。
我有一个 html 元素,例如:
<div id="spam[500]">
我想通过 id 搜索这个元素,但似乎 nokogiri 被 [] 弄糊涂了。我正在努力:
doc.css("#spam[#{eggs.id}]")
但无济于事。
克里斯,试试这个,让我知道它是否有效:
doc = Nokogiri::HTML(page)
el = doc.xpath("//div[@id='spam[500]']").first
问题是您无法通过 CSS(即使在浏览器中)访问它。尝试为“spam[500]”设置一些 CSS 属性,它们将不会被应用。但是,您可以通过 xpath 访问,如上所示。
你也可以这样做
el = doc.xpath("id(spam[500])").first
对于具有 id 的元素,您可以通过 id 直接调用它们,因为它始终是唯一的。
要找出 xpath,请在 firefox 中添加一个“xpath 检查器”插件。它有很大帮助而且非常容易
这里真正的问题是字符 [ 和 ] 在 HTML4(或 XML)id 属性中是非法的 - 请查看以下内容:
http://www.w3.org/TR/html401/types.html#type-name
(有关 id 属性的规范定义,请查看 www.w3.org//TR/html401/struct/global.html#adef-id)