0


Python Selenium如何下载网页中的图片到本地?(Base64编码的图片下载)

前言:

    在网页上,图片有时会以Base64编码的形式嵌入在HTML中,而不是作为单独的文件提供。这种方式的优点是可以减少HTTP请求的数量,因为图片数据直接包含在HTML中,不需要额外的请求来获取图片文件。这对于小图片或图标特别有用,因为这些图片的文件大小可能比一个HTTP请求的开销还要小。

    当你在网页上看到一个Base64编码的图片时,你需要先将这个编码解码为原始的二进制数据,然后才能将这个数据保存为一个图片文件。所以我们需要使用
base64.b64decode

函数去解码。

大致的步骤:

  1. 使用Selenium查找图片元素,并获取其src属性。这个属性包含了图片的Base64编码。
  2. 使用split函数将src属性的值分割为两部分。第一部分是"data:image/png;base64",这是一个标识,表示接下来的数据是一个Base64编码的PNG图片。第二部分是实际的Base64编码。
  3. 使用base64.b64decode函数将Base64编码解码为原始的二进制数据。
  4. 将这个二进制数据写入一个文件,创建一个图片文件。

实现代码:

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编码。

标签: python selenium

本文转载自: https://blog.csdn.net/weixin_47420447/article/details/135389652
版权归原作者 CCSBRIDGE 所有, 如有侵权,请联系我们删除。

“Python Selenium如何下载网页中的图片到本地?(Base64编码的图片下载)”的评论:

还没有评论