Я использую lxml в Python для анализа некоторого HTML, и я хочу извлечь всю ссылку на изображения. Как я сделать это прямо сейчас:Python, XPath: Найти все ссылки на изображения
//a[contains(@href,'.jpg') or contains(@href,'.jpeg') or ... (etc)]
Есть несколько проблем с этим подходом:
- вы должны перечислить все возможные расширения изображения во всех случаях (как «JPG» и " JPG "), которым не элегантный
- в странной ситуации, то HREF может содержать .jpg где-то в середине, а не в конце строки
Я хотел использовать регулярное выражение, но мне не удалось:
//a[regx:match(@href,'.*\.(?:png|jpg|jpeg)')]
Возвращаемый мне все ссылки все время ...
ли кто-нибудь знает право, элегантный способ сделать это или то, что случилось с моим регулярным выражением подхода?
Хороший вопрос, +1. См. Мой ответ для решения одной из ваших проблем - поиск @href, который заканчивается только заданной строкой. – 2010-12-01 21:46:31
В дополнение к другим ответам, описывающим подстроки, вы можете использовать функцию перевода для грубого преобразования case. translate (@href, "EGIJFNP", "egijfnp") (все символы в png, jpeg, gif). – yonran 2010-12-02 01:53:24