Python Selenium如何下载网页中的图片到本地?(Base64编码的图片下载)
2024-01-08 08:32:29
前言:? ? ? ??
? ? ? ? 在网页上,图片有时会以Base64编码的形式嵌入在HTML中,而不是作为单独的文件提供。这种方式的优点是可以减少HTTP请求的数量,因为图片数据直接包含在HTML中,不需要额外的请求来获取图片文件。这对于小图片或图标特别有用,因为这些图片的文件大小可能比一个HTTP请求的开销还要小。
? ? ? ? 当你在网页上看到一个Base64编码的图片时,你需要先将这个编码解码为原始的二进制数据,然后才能将这个数据保存为一个图片文件。所以我们需要使用base64.b64decode
函数去解码。
大致的步骤:
- 使用Selenium查找图片元素,并获取其
src
属性。这个属性包含了图片的Base64编码。 - 使用
split
函数将src
属性的值分割为两部分。第一部分是"data:image/png;base64",这是一个标识,表示接下来的数据是一个Base64编码的PNG图片。第二部分是实际的Base64编码。 - 使用
base64.b64decode
函数将Base64编码解码为原始的二进制数据。 - 将这个二进制数据写入一个文件,创建一个图片文件。
实现代码:
image_tag = dwk_auto.find_xpath("""your_target_xpath""")
image_data = image_tag.get_attribute("src")
image_data = image_data.split(";base64,")[1]
# 解码图片数据
image_bytes = base64.b64decode(image_data)
# 将图片数据写入文件
with open("image.png", "wb") as f:
f.write(image_bytes)
? ? ? ? dwk_auto是我自定义的一个类,find_xpath是我自定义的一个函数,
? ? ? ? 主要是获取到目标图片的tag,一般来说,这是一个img标签,获取到了tag就能获取该tag的src属性了。
? ? ? ? 对于img
元素,src
属性用于指定图片的URL。这个URL可以是一个指向图片文件的HTTP或HTTPS URL,也可以是一个包含Base64编码的图片数据的"data" URL。
? ? ? ? 例如,一个包含Base64编码的PNG图片的"data" URL可能看起来像这样:
data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==
? ? ? ? 在这个例子中,image/png
是MIME类型,表示这是一个PNG图片,iVBORw0KG...
是图片的Base64编码。
文章来源:https://blog.csdn.net/weixin_47420447/article/details/135389652
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!