前言:? ? ? ??
? ? ? ? 在網(wǎng)頁上,圖片有時(shí)會(huì)以Base64編碼的形式嵌入在HTML中,而不是作為單獨(dú)的文件提供。這種方式的優(yōu)點(diǎn)是可以減少HTTP請(qǐng)求的數(shù)量,因?yàn)閳D片數(shù)據(jù)直接包含在HTML中,不需要額外的請(qǐng)求來獲取圖片文件。這對(duì)于小圖片或圖標(biāo)特別有用,因?yàn)檫@些圖片的文件大小可能比一個(gè)HTTP請(qǐng)求的開銷還要小。
? ? ? ? 當(dāng)你在網(wǎng)頁上看到一個(gè)Base64編碼的圖片時(shí),你需要先將這個(gè)編碼解碼為原始的二進(jìn)制數(shù)據(jù),然后才能將這個(gè)數(shù)據(jù)保存為一個(gè)圖片文件。所以我們需要使用base64.b64decode
函數(shù)去解碼。
大致的步驟:
- 使用Selenium查找圖片元素,并獲取其
src
屬性。這個(gè)屬性包含了圖片的Base64編碼。 - 使用
split
函數(shù)將src
屬性的值分割為兩部分。第一部分是"data:image/png;base64",這是一個(gè)標(biāo)識(shí),表示接下來的數(shù)據(jù)是一個(gè)Base64編碼的PNG圖片。第二部分是實(shí)際的Base64編碼。 - 使用
base64.b64decode
函數(shù)將Base64編碼解碼為原始的二進(jìn)制數(shù)據(jù)。 - 將這個(gè)二進(jìn)制數(shù)據(jù)寫入一個(gè)文件,創(chuàng)建一個(gè)圖片文件。
實(shí)現(xiàn)代碼:
image_tag = dwk_auto.find_xpath("""your_target_xpath""")
image_data = image_tag.get_attribute("src")
image_data = image_data.split(";base64,")[1]
# 解碼圖片數(shù)據(jù)
image_bytes = base64.b64decode(image_data)
# 將圖片數(shù)據(jù)寫入文件
with open("image.png", "wb") as f:
f.write(image_bytes)
? ? ? ? dwk_auto是我自定義的一個(gè)類,find_xpath是我自定義的一個(gè)函數(shù),
? ? ? ? 主要是獲取到目標(biāo)圖片的tag,一般來說,這是一個(gè)img標(biāo)簽,獲取到了tag就能獲取該tag的src屬性了。
? ? ? ? 對(duì)于img
元素,src
屬性用于指定圖片的URL。這個(gè)URL可以是一個(gè)指向圖片文件的HTTP或HTTPS URL,也可以是一個(gè)包含Base64編碼的圖片數(shù)據(jù)的"data" URL。
? ? ? ? 例如,一個(gè)包含Base64編碼的PNG圖片的"data" URL可能看起來像這樣:
data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==
? ? ? ? 在這個(gè)例子中,image/png
是MIME類型,表示這是一個(gè)PNG圖片,iVBORw0KG...
是圖片的Base64編碼。文章來源:http://www.zghlxwxcb.cn/news/detail-854641.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-854641.html
到了這里,關(guān)于Python Selenium如何下載網(wǎng)頁中的圖片到本地?(Base64編碼的圖片下載)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!