前言:
在网页上,图片有时会以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编码。