Python,XPath:查找图像的所有链接

Nic*_*rdu 5 python xpath lxml

我在Python中使用lxml来解析一些HTML,我想提取所有链接到图像.我现在这样做的方式是:

//a[contains(@href,'.jpg') or contains(@href,'.jpeg') or ... (etc)]
Run Code Online (Sandbox Code Playgroud)

这种方法存在一些问题:

  • 你必须在所有情况下("jpg"和"JPG")列出所有可能的图像扩展,这不是优雅的
  • 在奇怪的情况下,href可能在中间某处包含.jpg,而不是在字符串的末尾

我想使用正则表达式,但我失败了:

//a[regx:match(@href,'.*\.(?:png|jpg|jpeg)')]
Run Code Online (Sandbox Code Playgroud)

这一直给我回复了所有链接......

有谁知道正确,优雅的方式来做这个或我的正则表达式方法有什么问题?

Dim*_*hev 2

代替

a[contains(@href,'.jpg')]
Run Code Online (Sandbox Code Playgroud)

使用

a[substring(@href, string-length(@href)-3)='.jpg']
Run Code Online (Sandbox Code Playgroud)

(对于其他可能的结局也有相同的表达模式)。

上述表达式是 XPath 1.0 等效于以下 XPath 2.0 表达式

a[ends-with(@href, '.jpg')]
Run Code Online (Sandbox Code Playgroud)