XPath选择图像链接仅当img src的父href链接存在时,否则选择img src lin

2024-10-03 17:24:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我遇到了一个有点复杂的XPath问题。考虑一下这个网页的HTML(我使用Imgur并替换了一些文本):

<a href="//i.imgur.com/ahreflink.jpg" class="zoom">
    <img class="post-image-placeholder" src="//i.imgur.com/imgsrclink.jpg">
    </img>
</a>

我首先要搜索文档中的所有img标记并找到它们对应的srces。接下来,我想检查img src链接是否包含图像文件扩展名(.jpeg、.jpg、.gif、.png)。如果它不包含图像扩展名,请不要获取它。在本例中,它有一个图像扩展名。现在我们想弄清楚我们想抓住哪个链接。既然parent href存在,我们应该抓住相应的链接。在

期望结果://i.imgur.com/ahreflink.jpg

但现在假设parent href不存在:

^{pr2}$

期望结果://i.imgur.com/imgsrclink.jpg

如何构造这个XPath?如果有帮助,我还将Python(scray)与XPath一起使用。因此,如果需要分离出问题,也可以使用Python。在


Tags: 图像srccom网页img链接xpathclass
2条回答

您不必在单个XPath表达式中执行该操作。下面是一个废弃的特定实现,它忽略了图像扩展名检查(根据注释判断,您已经知道了):

images = response.xpath("//a/img")
for image in images:
    a_link = image.xpath("../@href").extract_first()
    image_link = image.xpath("@src").extract_first()

    print(a_link or image_link)

在单个xpath表达式中执行此操作非常简单:

//a[not(@href)]/img/@src | //a[img]/@href

相关问题 更多 >