前情提要
小伙伴们期待已久的爬虫作业栏目,终于又更新啦。本次的程序,是自动设置头像的爬虫程序的一种升级应用版本,基本的思路是,通过遍历用户头像,就可以保存大量的头像了
至于保存到哪里呢?在这个程序的准备工作中考虑过保存到第三方图床上或者是使用oss对象存储功能。不过最后还是采用了直接保存为文件。下次有机会的话,再用其他方式吧
实现分析
首先,第一个部分就是发起请求,然后保存图片。这个功能在上一次的程序中已经实现过了
def save_img(qq_number):
base_url = "aHR0cHM6Ly9xbG9nbzQuc3RvcmUucXEuY29tL3F6b25lLw=="
url = b64decode(base_url).decode() + str(qq_number) + "/" + str(qq_number) + "/" + "640"
headers = {"user-agent": "Mozilla/5.0"}
r = requests.get(url, headers=headers)
with open(str(qq_number) + ".png", "wb") as f:
f.write(r.content)
问题在于,如果批量爬取头像的话,就不能采用这种直接保存的方式。主要原因在于,在此期间,我们也会遇到大量的重复头像和默认头像,如果我们把这些重复的内容都保存一次的话,无疑会浪费很多的空间,而且在后期的使用和处理上也是非常糟糕的,因此,我们必须引入去重的功能
首先呢,我们先计算这个图片的哈希值,然后把这个值存起来,等到爬下一个图片的时候,用下一个图片的哈希值和当前图片的值进行对比。如果相同,就放弃这个图片
如果只使用python的内置方