找到ID标签包括[与引入nokogiri](Find tag with id including [

2019-07-31 11:31发布

我有一个HTML元素,如:

<div id="spam[500]">

我想搜索通过ID这个元素,但似乎引入nokogiri是越来越由[]混淆。 我尝试着:

doc.css("#spam[#{eggs.id}]")

但无济于事。

Answer 1:

克里斯,试试这个,让我知道,如果它的工作原理:

doc = Nokogiri::HTML(page)
el = doc.xpath("//div[@id='spam[500]']").first

问题是,你无法通过CSS访问它(即使是在浏览器)。 尝试设置为“垃圾邮件[500]”一些CSS属性,他们将不会被应用。 但是,您可以通过访问的XPath,如上图所示。



Answer 2:

这里真正的问题是,字符[和]是在HTML4(或XML)id属性非法 - 看看下面:

http://www.w3.org/TR/html401/types.html#type-name

(id属性的规范定义看www.w3.org//TR/html401/struct/global.html#adef-id)



Answer 3:

你也可以这样来做

el = doc.xpath("id(spam[500])").first

具有ID的元素,你可以通过ID,因为它始终是唯一的直接调用它们。

对于查不到的XPath,请添加“的XPath检查”插件的Firefox。 它帮助了很多,很容易



文章来源: Find tag with id including [] with Nokogiri