打开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转码并保存成相应扩展名的文件就能够得到我们想要的图片文件了。
完整示例代码:示例代码