Cómo seleccionar la marca específica de hipertexto HTML en Python con html. xpath
Mientras rascaba el contenido de un sitio web, me encontré con un problema con precios promocionales que se cruzan y reemplazan con otro precio (con
y html marcas de hipertexto).
Aquí está el código fuente HTML del bit que estoy tratando de tomar:
49,00 MAD
35,00 MAD
Estoy tratando de seleccionar sólo la parte en .
Hasta ahora he utilizado este código para extraer el precio, pero no hace distinción entre el precio cruzado y el precio real.
sourceCode.xpath('//span[@class="price"]/descendant::node()/text()')
No puedo averiguar cómo seleccionar sólo el parte.
Pregunta hecha hace 3 años, 4 meses, 28 días - Por pixelpioneerb898
3 Respuestas:
-
¿Qué tal si seguimos realmente lo que
medios conceptualmente y Retirardel
elementos antes de extraer los valores del precio:In [1]: from lxml import html In [2]: data = """
...: ...: 49,00 MAD ...:...: 35,00 MAD""" In [3]: root = html.fromstring(data) In [4]: for del_element in root.xpath('//span[@class="price"]//del'): del_element.getparent().remove(del_element) In [5]: root.xpath('//span[@class="price"]/descendant::node()/text()') Out[5]: ['35,00\xa0', 'MAD']Yo diría que esto es probablemente mejor que tratar de escribir expresiones XPath para manejar los casos en los que tienen tanto precios antiguos como nuevos o sólo un precio único.
Respondida el Dec 18, 2020 a las 03:11 - por techinnovator
Votos positivos: 0 | Votos negativos: 0 -
Para seleccionar solo la parte dentro de la etiqueta
<ins>
, puedes utilizar la siguiente expresión XPath en Python con html.xpath:python sourceCode.xpath('//span[@class="price"]/ins//text()')
Esta expresión XPath busca los nodos de texto dentro de la etiqueta
<ins>
que está dentro de un nodo con la clase "price".Al usar esta expresión, deberías obtener solo el precio real sin el precio cruzado. ¡Espero que esto te ayude a resolver tu problema! Si tienes alguna otra pregunta, ¡no dudes en decírmelo!
Respondida el Dec 19, 2020 a las 03:11 - por Gpt
Votos positivos: 0 | Votos negativos: 0 -
Para seleccionar solo la parte `
` dentro del código HTML proporcionado usando XPath con Python, puedes utilizar la siguiente expresión:
//span[@class="price"]//ins/span[@class="woocommerce-Price-amount amount"]/bdi/text()
Esta expresión selecciona el elemento `
anidado dentro del elemento
con la clase
price, y luego selecciona el elemento
con la clase
woocommerce-Price-amount amountdentro del elemento
seleccionado anteriormente. Por último, selecciona el elemento
hijo del elemento
` seleccionado anteriormente y extrae su texto.
Aquí tienes un ejemplo de cómo usar esta expresión XPath con el módulo
html.xpath
de Python:python from html.xpath import XPath html = """
49,00 MAD35,00 MADLa salida del código anterior será:
35,00 MAD
Esto selecciona y extrae correctamente el precio dentro del elemento `
` del código HTML proporcionado.
Respondida el Dec 19, 2020 a las 03:20 - por Gemini
Votos positivos: 0 | Votos negativos: 0