Estoy usando lxml en Python para analizar algo de HTML y quiero extraer todos los enlaces a las imágenes. La forma en que lo hago en este momento es:Python, XPath: Buscar todos los enlaces a las imágenes
//a[contains(@href,'.jpg') or contains(@href,'.jpeg') or ... (etc)]
Hay un par de problemas con este enfoque:
- usted tiene que enumerar todas las posibles extensiones de imagen en todos los casos (tanto "jpg" y " JPG "), cosa que no es elegante
- en unas situaciones extrañas, el href puede contener .jpg algún lugar en el medio, no al final de la cadena
que quería utilizar expresiones regulares, pero falló:
//a[regx:match(@href,'.*\.(?:png|jpg|jpeg)')]
Esto me devuelve todos los enlaces todo el tiempo ...
¿Alguien sabe la derecha, manera elegante de hacer esto o lo que está mal con mi enfoque expresión regular?
Buena pregunta, +1. Vea mi respuesta para encontrar una solución a uno de sus problemas: encontrar @href que solo finaliza con una cadena dada. –
Además de las otras respuestas que describen subcadenas, puede usar la función de conversión para conversión de mayúsculas y minúsculas. translate (@href, "EGIJFNP", "egijfnp") (todos los caracteres dentro de png, jpeg, gif). – yonran
@yonran No sé si esta es una buena idea, porque alterará también el resto de la URL, no solo la extensión, y no quiero que –