【爬虫作业】使用scrapy批量爬取头像,并通过redis进行去重

本文介绍了一个使用Scrapy爬虫批量抓取头像的作业,通过计算图片哈希并利用Redis进行去重,避免重复保存。程序包括发起请求、响应处理、去重逻辑和图片保存等功能,代码已上传至GitHub。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前情提要

小伙伴们期待已久的爬虫作业栏目,终于又更新啦。本次的程序,是自动设置头像的爬虫程序的一种升级应用版本,基本的思路是,通过遍历用户头像,就可以保存大量的头像了

至于保存到哪里呢?在这个程序的准备工作中考虑过保存到第三方图床上或者是使用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的内置方

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值