【问题标题】:How do I extract img src from HTML via lxml XPath?如何通过 lxml XPath 从 HTML 中提取 img src?
【发布时间】:2018-08-10 05:27:39
【问题描述】:

我正在尝试使用 python/lxml 和 xpath() 命令提取图像 URl,但无法隔离 url 本身。

这是我想要的 img src 周围的 HTML:

<div data-index="0" data-za-action="Photo Lightbox - Open" data-za-
category="Homes" class="img-wrapper za-track-event zsg-lightbox-show" 
data-target-id="hdp-photo-lightbox" data-za-label="position: 0, total: 
18, id: 10660534745" id="yui_3_18_1_2_1519884476676_1986"><img 
src="https://photos.zillowstatic.com/p_h/IS2fordnekys6d1000000000.jpg" 
onload="if (typeof ClientProfiler !== 'undefined') { 
ClientProfiler.profile('HDPFirstPhotoLoaded') }" id="X1-
IAgz3dcnekys6d1000000000_ptw8e" class="hip-photo"></div>

具体来说,我想隔离https://photos.zillowstatic.com/p_h/IS2fordnekys6d1000000000.jpg url。

我尝试了几种方法都没有成功,包括以下变体:

xpath(".//img[@class='hip-photo']/@src")
xpath(".//img[@class='hip-photo']//text()")

【问题讨论】:

  • 欢迎来到 SO!请拿起tour,阅读How to Askminimal reproducible example!此外,屏幕截图会像磁铁一样吸引反对票。
  • 请将代码作为文本包含在code 部分中,而不是作为图像。
  • 您确定该页面的内容不是动态生成的吗?如果你是那么没关系,否则你应该使用任何浏览器模拟器来读取元素,然后应用建议的 xpath,甚至你定义的方式也应该这样做。

标签: python html xpath web-scraping lxml


【解决方案1】:

我会尝试 Beautifulsoup (bs4) 库。你的 img 标签有一个 id,所以你可以在 bs4 中调用 find 函数。

source_code.find('img', id=its_id)

然后从标签中获取scr。

Similar question regarding your problem

bs4 Youtube tutorial if you're new to it

Beautifulsoup 非常容易学习,如果您以前从未使用过它,因此我建议您研究一下。

希望这会有所帮助!

【讨论】:

    【解决方案2】:

    .// 相对于当前节点进行搜索,您的问题中未指定。如果您使用//,它将搜索整个文档。另见What is the difference between .// and //* in XPath?

    如果你想搜索整个文档的 XPath,

    //img[@class="hip-photo"]/@src
    

    将选择class 属性值为"hip-photo" 的所有img 元素的所有src 属性。

    【讨论】:

    • 评论已删除。给出 pus one 的链接和使用点的清晰度。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-31
    • 1970-01-01
    • 2018-04-06
    • 2020-08-14
    • 2010-09-13
    • 1970-01-01
    相关资源
    最近更新 更多