Python番外篇:自动下载你所有粉丝的头像图片(requests + urllib)

Hello,大家好,我是wangzirui32,今天我们来学习如何爬取并下载你所有粉丝的头像图片。

1. 分析粉丝列表

1.2 数据接口

经过我的分析,发现粉丝列表是通过js脚本加载生成的,那它必然会访问一个数据接口,这个接口经过查找,为:

https://blog.csdn.net//phoenix/web/v1/fans/list?blogUsername=你的用户名

访问这个接口就可以获取某个用户所有的粉丝数据。

1.3 分析数据接口

这里我直接放图片,不懂的可以在评论区讨论:
分析

2. 编写代码

首先,你需要在程序文件的目录下创建picture文件夹,然后根据上面的分析,写出代码:(不懂的看注释)

from requests import get
from json import loads
from urllib.request import urlopen

# 伪造请求头
headers = {
    
    
           "User-Agent": "Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Mobile Safari/537.36",
		   "Host": "blog.csdn.net"
}

# 参数定义 可以把blogUsername改为你的用户名(Tips:是用户名不是昵称!)
params = {
    
    "blogUsername": "wangzirui32"}

# 请求数据
url = "https://blog.csdn.net//phoenix/web/v1/fans/list"
r = get(url, params=params, headers=headers)

# 使用loads加载数据
fans_data = loads(r.text)['data']['list']

# 用来统计成功下载的粉丝头像的数量
save_fans_num = 0

# 遍历所有粉丝数据
for i in fans_data:
	# 文件名为:当前粉丝的昵称.png
    with open("picture/" + i['nickname'] + ".png", "wb") as f:
    	# 防止发生错误
        try:
            f.write(urlopen(i["userAvatar"]).read())
        except Exception:
        	# 如果错误,就提示下载失败
            print(i['nickname'] + "的头像下载失败!")
        else:
        	# 如果没有报错,则提示下载完成,并将save_fans_num+1
            print(i['nickname'] + "的头像已经下载完毕!")
            save_fans_num += 1

print("头像下载完毕!")
print("一共下载了" + str(save_fans_num) + "个粉丝头像")

3. 展示结果

目前我一个有15个粉丝,所以在没有出错的情况下应该下载了15张照片,运行代码,结果也真如此:
结果展示快看看有没有你吧!

写在最后

有些博主的粉丝很多,有的甚至上千,上万个,程序需要运行很久才能爬取完成,这里我建议使用多进程爬虫或多协程爬虫来解决时间长的问题。


好了,今天的课程就到这儿了,感兴趣的可以点赞收藏,拜拜!

猜你喜欢

转载自blog.csdn.net/wangzirui32/article/details/114233799