Найти тег с идентификатором, включая [] с Nokogiri - PullRequest
11 голосов
/ 06 августа 2009

У меня есть HTML-элемент, такой как:

<div id="spam[500]">

Я хочу найти этот элемент по id, но похоже, что нокогири запутывается []. Я пытаюсь:

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

но безрезультатно.

Ответы [ 3 ]

14 голосов
/ 06 августа 2009

Крис, попробуйте это и дайте мне знать, если это работает:

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

Проблема в том, что вы не можете получить к нему доступ через CSS (даже в браузере). Попробуйте установить некоторые атрибуты CSS для «spam [500]», и они не будут применены. Вы можете получить доступ через xpath, как показано выше.

1 голос
/ 28 декабря 2011

Вы также можете сделать это так

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

для элементов, имеющих идентификаторы, вы можете вызывать их напрямую через id, потому что они всегда уникальны.

для поиска xpath, пожалуйста, добавьте плагин 'xpath checker' к firefox. Это очень помогает и очень легко

1 голос
/ 09 декабря 2009

Реальная проблема здесь в том, что символы [и] недопустимы в атрибуте id HTML4 (или XML) - посмотрите на следующее:

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

(нормативное определение атрибута id смотрите на сайте www.w3.org//TR/html401/struct/global.html#adef-id)

.
...