Pregunta

Tengo un XPath con el que estoy tratando de coincidir con las etiquetas meta que tienen un atributo name con un valor que contiene la palabra 'palabra clave' independientemente del caso. Básicamente, estoy tratando de igualar:

<meta name="KEYWORDS">
<meta name="Keywords">
<meta name="keywords">

con el XPath

'descendant::meta[contains(lower-case(@name), "keyword")]/@content'

Estoy usando Scrapy y ha incorporado en los selectores, pero cuando trato de este XPath, me sale un error "no válido XPath: ...". ¿Qué estoy haciendo mal y cuál es la forma correcta de hacer lo que quiero?

¿Fue útil?

Solución

Scrapy selectores se construyó sobre la biblioteca libxml2, que, que yo sepa, no es compatible con XPath 2.0. Al menos libxslt no lo hace seguro.

Se puede utilizar XPath 1.0 translate () para resolver esto. En general, se verá así:

translate(yourString, 
          'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 
          'abcdefghijklmnopqrstuvwxyz')
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top