【发布时间】:2015-01-24 00:45:45
【问题描述】:
我在 Python 中使用 lxml 来解析一些 HTML,我想提取所有指向图像的链接。我现在的做法是:
//a[contains(@href,'.jpg') or contains(@href,'.jpeg') or ... (etc)]
这种方法有几个问题:
- 您必须在所有情况下列出所有可能的图像扩展名(“jpg”和“JPG”),这并不优雅
- 在奇怪的情况下,href 可能在中间某处包含 .jpg,而不是在字符串的末尾
我想使用正则表达式,但失败了:
//a[regx:match(@href,'.*\.(?:png|jpg|jpeg)')]
这一直返回给我所有的链接......
有谁知道这样做的正确、优雅的方式或我的正则表达式方法有什么问题?
【问题讨论】:
-
好问题,+1。请参阅我的答案以解决您的一个问题 - 找到仅以给定字符串结尾的 @href。
-
除了描述子字符串的其他答案外,您还可以使用 translate 函数进行粗略的大小写转换。 translate(@href, "EGIJFNP", "egijfnp") (png、jpeg、gif 中的所有字符)。
-
@yonran 我不知道这是不是个好主意,因为它还会改变 URL 的其余部分,不仅是扩展名,而且我不希望这样