Python爬虫实战N02使用Base64编码的图片爬取与解码还原图文教程

2024-12-30阅读数:46
上一篇:Python爬虫实战N03限制访问频率不低于1秒图文教程
下一篇:Python爬虫实战H01CSS样式偏移混淆文本内容的解析与爬取图文教程

打开Python爬虫实战练习页面使用Base64编码的图片爬取与解码还原_N02_Spiderbuf,可以看到页面很简单,只有一小段文字及一张图片组成。

在网页上点击右键 > 显示网页源代码,在HTML源码里面直接按Ctrl + F ,然后输入关键字img(img是HTML中加载图片的常用标签)进行搜索,在HTML代码的第63行我们找到了img标签。

但与以往不同的是,img标签的src属性并没有像往常一样指向一个链接,而是一大串看似杂乱的字符串。

src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABWQAAAODCAYAAAA7HAixAAAAAXNSR0IArs4c6QAAAARnQU1BAACx...

根据这串字符串前面的关键字,我们应该能猜到这里是一串Base64编码的字符串,而且是png图片。也就是说我们要爬取的图片就是这一长串内容组成的。

能不能把这一长串字符串转换成一个图片文件呢?答案是肯定的。Python本身就提供了Base64编码用的库。

# item 是获取到的base64字符串
item = item.replace('data:image/png;base64,','')
str_bytes = item.encode('raw_unicode_escape')  # str 转 bytes
decoded = base64.b64decode(str_bytes)

img = open('./data/n02/n02.png', 'wb')
img.write(decoded)
img.close()

也就是说,我们通过requests获取到这个HTML的内容,然后通过xpath把 img 标签的 src 属性的值获取出来,然后通过Base64转码并保存成相应扩展名的文件就能够得到我们想要的图片文件了。

完整示例代码:示例代码