上期我们讲到如何用matplotlib模块将表格里的数据转换成可视化的折线图,但是,这里会有一个问题,表格里的数据是死的,是我随手创建的。在这一期,我将讲解如何通过requests+matplotlib等编写一个真实数据的可视化内容。
今天就来统计一下某网站上作者总榜前20名作者的粉丝数吧
首先,第一步,通过requests模块获取相应的数据
我们先确定我们需要什么数据 1.作者名称 2,作者粉丝数
一,通过fiddler抓包,找到哪个接口有我们想要的数据
编辑
二,将抓取到的接口通过python进行请求
这一步我们将抓取到的内容通过requets模块请求出来 然后获取数据,我将作者名称作为折线图的x轴,将粉丝数作为y轴。
三,将抓取到的数据通过matplotlib模块转换为折线图
我们这里直接将我们获取到的内容传递给我们的matplotlib即可,看下实现代码吧
importrequestsimportmatplotlib.pyplotaspltheaders={ "accept": "application/json, text/plain, */*", "accept-encoding": "gzip, deflate, br", "referer": "https://blog.csdn.net/rank/list/total?spm=1001.2014.3001.5476", "sec-ch-ua": '"Chromium";v="94", "Google Chrome";v="94", ";Not A Brand";v="99"', "sec-ch-ua-mobile": "?0", "sec-ch-ua-platform": '"Windows"', "sec-fetch-dest": "empty", "sec-fetch-mode": "cors", "sec-fetch-site": "same-origin", "user-agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36"} a=requests.get(url="https://blog.csdn.net/phoenix/web/blog/all-rank?page=0&pageSize=20",headers=headers) a.content.decode("utf-8") x=[] y=[] print(a.json()) print(a.json()["data"]["allRankListItem"]) fornina.json()["data"]["allRankListItem"]: #获取作者名称x.append(n["nickName"]) foriina.json()["data"]["allRankListItem"]: #获取作者粉丝数y.append(i["fansCount"]) print(x) print(y) plt.rcParams['font.sans-serif']=['SimHei'] plt.rcParams['axes.unicode_minus'] =False#解决因为中文导致乱码现象fig=plt.figure(figsize=(30,8)) #由于内容太多 我们把画布放大,这样就不好导致内容太多出现重叠的问题plt.plot(x,y)##将我们解析到的x轴和y轴的内容放在这里,作为参数传递进去就ok啦plt.show()
看下实现效果吧
编辑
可以支持内容放大的
ctrl+鼠标滑轮可以将图放大
编辑
这里我们可以看到粉丝数最多的是”一个处女座的程序猿“的粉丝数是最多的哦
同时,也可以用柱状图的内容显示,只要更改一个函数内容就行
编辑
看下柱状图效果吧
编辑
今天的分享就在这里,我们下次在进行内容进阶吧,欢迎关注哦 我们一起成长学习 拜拜。