Encuentra la etiqueta con ID que incluye [] con Nokogiri
-
22-07-2019 - |
Pregunta
Tengo un elemento html como:
<div id="spam[500]">
Quiero buscar este elemento por id, pero parece que nokogiri se está confundiendo con []. Estoy intentando:
doc.css("#spam[#{eggs.id}]")
pero fue en vano.
Solución
Chris, prueba esto y avísame si funciona:
doc = Nokogiri::HTML(page)
el = doc.xpath("//div[@id='spam[500]']").first
El problema es que no puedes acceder a través de CSS (incluso en el navegador). Intente configurar algunos atributos CSS para " spam [500] " y no se aplicarán Sin embargo, puede acceder a través de xpath, como se muestra arriba.
Otros consejos
El verdadero problema aquí es que los caracteres [y] son ??ilegales en un atributo de identificación HTML4 (o XML) - mire lo siguiente:
http://www.w3.org/TR/html401 /types.html#type-name
(para la definición normativa del atributo id, consulte www.w3.org//TR/html401/struct/global.html#adef-id)
también puedes hacerlo de esta manera
el = doc.xpath("id(spam[500])").first
para los elementos que tienen ID, puede llamarlos directamente a través de id porque siempre es único.
para descubrir xpaths, agregue un complemento 'xpath checker' a firefox. Ayuda mucho y es muy fácil