Day67 数据可视化之调用API并可视化
API:类似接口,在后端的数据可以通过API传递给前端,前端可以实现数据的可视化。与HTTP网页爬虫相比,API接口已经存储好数据,不太需要去解析网页。
参考文章:https://blog.csdn.net/qq_44332894/article/details/109862654
https://blog.csdn.net/weixin_43944997/article/details/105502469 https://www.liaoxuefeng.com/wiki/1016959663602400/1017639890281664
先用bilibili番剧进行数据提取
选用番剧列表2020年会员专享番,提取一页再进行可视化。
import requests
import re
import pygal
from pygal.style import LightColorizedStyle as LCS
from pygal.style import LightenStyle as LS
"""B站2020年付费会员番剧索引页数据"""
URL='https://api.bilibili.com/pgc/season/index/result?season_version=-1&area=-1&is_finish=-1©right=-1&season_status=-1&season_month=-1&year=-1&style_id=-1&order=3&st=1&sort=0&page=1&season_type=1&pagesize=20&type=1'
r=requests.get(URL)
print("Status code:",r.status_code)
response_dict=r.json()
print(response_dict.keys())
print("list",response_dict['data']['list']) #字典列表
repo_dicts=response_dict['data']['list']
names,numb=[],[]
for repo_dict in repo_dicts:
print("标志:",repo_dict['badge']) #独家还是会员专享
print("链接:",repo_dict['link']) #视频观看链接
pop=re.findall('\d+\.\d*',repo_dict['order']) #浮点型匹配
if len(pop)==False:
pop=re.findall(r'\d+',repo_dict['order']) #为空列表,用整数匹配
float_pop=float(pop[0])
#追番人数,先从列表里取出字符串,再用正则表达式提取数字
print("追番人数:",float_pop)
print("名字:",repo_dict['title']) #番名
print("\n")
names.append(repo_dict['title']) #x轴
numb.append(float_pop) #Y轴
输出:
Status code: 200
dict_keys(['code', 'data', 'message'])
list [{'badge': '独家', 'badge_info': {'bg_color': '#00C0FF', 'bg_color_night': '#0B91BE', 'text': '独家'}, 'badge_type': 1, 'cover': 'http://i0.hdslb.com/bfs/bangumi/image/4179b4398bad6f92e876e352cae21be7b8ceb8bf.png', 'index_show': '全26话', 'is_finish': 1, 'link': 'https://www.bilibili.com/bangumi/play/ss26801', 'media_id': 22718131, 'order': '917.3万追番', 'order_type': 'fav_count', 'season_id': 26801, 'season_type': 1, 'title': '鬼灭之刃', 'title_icon': ''}, {'badge': '独家', 'badge_info': {'bg_color': '#00C0FF', 'bg_color_night': '#0B91BE', 'text': '独家'}, 'badge_type': 1, 'cover': 'http://i0.hdslb.com/bfs/bangumi/image/962b27ff452b5daf98038a10a6dad3c134916e7d.png', 'index_show': '更新至第22话', 'is_finish': 0, 'link': 'https://www.bilibili.com/bangumi/play/ss34004', 'media_id': 28229443, 'order': '783.3万追番', 'order_type': 'fav_count', 'season_id': 34004, 'season_type': 1, 'title': '鬼灭之刃(中配)', 'title_icon': ''}, {'badge': '会员专享', 'badge_info': {'bg_color': '#FB7299', 'bg_color_night': '#BB5B76', 'text': '会员专享'}, 'badge_type': 0, 'cover': 'http://i0.hdslb.com/bfs/bangumi/image/f2425cbdb07cc93bd0d3ba1c0099bfe78f5dc58a.png', 'index_show': '全13话', 'is_finish': 1, 'link': 'https://www.bilibili.com/bangumi/play/ss33802', 'media_id': 28229233, 'order': '750.7万追番', 'order_type': 'fav_count', 'season_id': 33802, 'season_type': 1, 'title': 'Re:从零开始的异世界生活 第二季', 'title_icon': ''}, {'badge': '独家', 'badge_info': {'bg_color': '#00C0FF', 'bg_color_night': '#0B91BE', 'text': '独家'}, 'badge_type': 1, 'cover': 'http://i0.hdslb.com/bfs/bangumi/image/26063f32e040c89d386b416b36b9e0205bb079ff.png', 'index_show': '即将开播', 'is_finish': 0, 'link': 'https://www.bilibili.com/bangumi/play/ss36174', 'media_id': 28231816, 'order': '708万追番', 'order_type': 'fav_count', 'season_id': 36174, 'season_type': 1, 'title': '工作细胞 第二季', 'title_icon': ''}, {'badge': '独家', 'badge_info': {'bg_color': '#00C0FF', 'bg_color_night': '#0B91BE', 'text': '独家'}, 'badge_type': 1, 'cover': 'http://i0.hdslb.com/bfs/bangumi/f5d5f51b941c01f8b90b361b412dc75ecc2608d3.png', 'index_show': '全14话', 'is_finish': 1, 'link': 'https://www.bilibili.com/bangumi/play/ss24588', 'media_id': 102392, 'order': '705.1万追番', 'order_type': 'fav_count', 'season_id': 24588, 'season_type': 1, 'title': '工作细胞', 'title_icon': ''}, {'badge': '独家', 'badge_info': {'bg_color': '#00C0FF', 'bg_color_night': '#0B91BE', 'text': '独家'}, 'badge_type': 1, 'cover': 'http://i0.hdslb.com/bfs/bangumi/image/83ad052250e9a803e4ebaa47bef971cb079e0543.png', 'index_show': '全12话', 'is_finish': 1, 'link': 'https://www.bilibili.com/bangumi/play/ss32982', 'media_id': 28228367, 'order': '691.1万追番', 'order_type': 'fav_count', 'season_id': 32982, 'season_type': 1, 'title': '辉夜大小姐想让我告白?~天才们的恋爱头脑战~', 'title_icon': ''}, {'badge': '独家', 'badge_info': {'bg_color': '#00C0FF', 'bg_color_night': '#0B91BE', 'text': '独家'}, 'badge_type': 1, 'cover': 'http://i0.hdslb.com/bfs/bangumi/a223b1376633625be1cd214c34d8bf34a1e03770.jpg', 'index_show': '全12话', 'is_finish': 1, 'link': 'https://www.bilibili.com/bangumi/play/ss5997', 'media_id': 5997, 'order': '644.9万追番', 'order_type': 'fav_count', 'season_id': 5997, 'season_type': 1, 'title': '埃罗芒阿老师', 'title_icon': ''}, {'badge': '独家', 'badge_info': {'bg_color': '#00C0FF', 'bg_color_night': '#0B91BE', 'text': '独家'}, 'badge_type': 1, 'cover': 'http://i0.hdslb.com/bfs/bangumi/a79e331b7443ed5df5a2acd345dc41d598d46ff9.jpg', 'index_show': '全12话', 'is_finish': 1, 'link': 'https://www.bilibili.com/bangumi/play/ss6339', 'media_id': 6339, 'order': '632.2万追番', 'order_type': 'fav_count', 'season_id': 6339, 'season_type': 1, 'title': '欢迎来到实力至上主义的教室', 'title_icon': ''}, {'badge': '独家', 'badge_info': {'bg_color': '#00C0FF', 'bg_color_night': '#0B91BE', 'text': '独家'}, 'badge_type': 1, 'cover': 'http://i0.hdslb.com/bfs/bangumi/320a6c9893a874e7db755ecb7316a0d0abccec49.jpg', 'index_show': '全14话', 'is_finish': 1, 'link': 'https://www.bilibili.com/bangumi/play/ss5800', 'media_id': 5800, 'order': '631.9万追番', 'order_type': 'fav_count', 'season_id': 5800, 'season_type': 1, 'title': '小林家的龙女仆', 'title_icon': ''}, {'badge': '独家', 'badge_info': {'bg_color': '#00C0FF', 'bg_color_night': '#0B91BE', 'text': '独家'}, 'badge_type': 1, 'cover': 'http://i0.hdslb.com/bfs/bangumi/451037aabcdce0379752e087720673609894161a.png', 'index_show': '全12话', 'is_finish': 1, 'link': 'https://www.bilibili.com/bangumi/play/ss26274', 'media_id': 5267730, 'order': '623.4万追番', 'order_type': 'fav_count', 'season_id': 26274, 'season_type': 1, 'title': '辉夜大小姐想让我告白~天才们的恋爱头脑战~', 'title_icon': ''}, {'badge': '会员专享', 'badge_info': {'bg_color': '#FB7299', 'bg_color_night': '#BB5B76', 'text': '会员专享'}, 'badge_type': 0, 'cover': 'http://i0.hdslb.com/bfs/bangumi/image/54d9ca94ca84225934e0108417c2a1cc16be38fb.png', 'index_show': '全12话', 'is_finish': 1, 'link': 'https://www.bilibili.com/bangumi/play/ss32781', 'media_id': 28228119, 'order': '616.7万追番', 'order_type': 'fav_count', 'season_id': 32781, 'season_type': 1, 'title': '刀剑神域 爱丽丝篇 异界战争 -终章-', 'title_icon': ''}, {'badge': '会员专享', 'badge_info': {'bg_color': '#FB7299', 'bg_color_night': '#BB5B76', 'text': '会员专享'}, 'badge_type': 0, 'cover': 'http://i0.hdslb.com/bfs/bangumi/a4c0e0ccc44fe3949a734f546cf5bb07da925bad.png', 'index_show': '全29话', 'is_finish': 1, 'link': 'https://www.bilibili.com/bangumi/play/ss25739', 'media_id': 139252, 'order': '614.4万追番', 'order_type': 'fav_count', 'season_id': 25739, 'season_type': 1, 'title': '关于我转生变成史莱姆这档事', 'title_icon': ''}, {'badge': '会员专享', 'badge_info': {'bg_color': '#FB7299', 'bg_color_night': '#BB5B76', 'text': '会员专享'}, 'badge_type': 0, 'cover': 'http://i0.hdslb.com/bfs/bangumi/1cc333ff578e5ea9fded7e454953a4e2291440c2.png', 'index_show': '全13话', 'is_finish': 1, 'link': 'https://www.bilibili.com/bangumi/play/ss25733', 'media_id': 134932, 'order': '597.3万追番', 'order_type': 'fav_count', 'season_id': 25733, 'season_type': 1, 'title': '青春猪头少年不会梦到兔女郎学姐', 'title_icon': ''}, {'badge': '独家', 'badge_info': {'bg_color': '#00C0FF', 'bg_color_night': '#0B91BE', 'text': '独家'}, 'badge_type': 1, 'cover': 'http://i0.hdslb.com/bfs/bangumi/b6e3986355efc081b7f4aaf9f576c9ce8116e193.jpg', 'index_show': '全14话', 'is_finish': 1, 'link': 'https://www.bilibili.com/bangumi/play/ss21542', 'media_id': 8892, 'order': '596.3万追番', 'order_type': 'fav_count', 'season_id': 21542, 'season_type': 1, 'title': '紫罗兰永恒花园', 'title_icon': ''}, {'badge': '独家', 'badge_info': {'bg_color': '#00C0FF', 'bg_color_night': '#0B91BE', 'text': '独家'}, 'badge_type': 1, 'cover': 'http://i0.hdslb.com/bfs/bangumi/image/85c6e348a00a54d0b86d538efb186e006a027e21.png', 'index_show': '全25话', 'is_finish': 1, 'link': 'https://www.bilibili.com/bangumi/play/ss29325', 'media_id': 28224095, 'order': '577.1万追番', 'order_type': 'fav_count', 'season_id': 29325, 'season_type': 1, 'title': '某科学的超电磁炮T', 'title_icon': ''}, {'badge': '会员专享', 'badge_info': {'bg_color': '#FB7299', 'bg_color_night': '#BB5B76', 'text': '会员专享'}, 'badge_type': 0, 'cover': 'http://i0.hdslb.com/bfs/bangumi/image/3c125e1aad08643e3eff2fb7d45e740c1a052725.png', 'index_show': '全13话', 'is_finish': 1, 'link': 'https://www.bilibili.com/bangumi/play/ss29590', 'media_id': 28224394, 'order': '560万追番', 'order_type': 'fav_count', 'season_id': 29590, 'season_type': 1, 'title': 'Re:从零开始的异世界生活 新编集版', 'title_icon': ''}, {'badge': '独家', 'badge_info': {'bg_color': '#00C0FF', 'bg_color_night': '#0B91BE', 'text': '独家'}, 'badge_type': 1, 'cover': 'http://i0.hdslb.com/bfs/bangumi/image/107eb93eff876dee16da4bf270b31c3e250e49d6.png', 'index_show': '2020-01-10上映', 'is_finish': 1, 'link': 'https://www.bilibili.com/bangumi/play/ss31779?theme=movie', 'media_id': 28226644, 'order': '556.5万追剧', 'order_type': 'fav_count', 'season_id': 31779, 'season_type': 2, 'title': '紫罗兰永恒花园外传:永远与自动手记人偶', 'title_icon': ''}, {'badge': '会员专享', 'badge_info': {'bg_color': '#FB7299', 'bg_color_night': '#BB5B76', 'text': '会员专享'}, 'badge_type': 0, 'cover': 'http://i0.hdslb.com/bfs/bangumi/7c1f3ca60da441ffbc2425409ee2a5c379264568.jpg', 'index_show': '全25话', 'is_finish': 1, 'link': 'https://www.bilibili.com/bangumi/play/ss3461', 'media_id': 3461, 'order': '540.5万追番', 'order_type': 'fav_count', 'season_id': 3461, 'season_type': 1, 'title': 'Re:从零开始的异世界生活', 'title_icon': ''}, {'badge': '独家', 'badge_info': {'bg_color': '#00C0FF', 'bg_color_night': '#0B91BE', 'text': '独家'}, 'badge_type': 1, 'cover': 'http://i0.hdslb.com/bfs/bangumi/074056b8543ed2ceb53dc13a79da1eafa3fa921a.jpg', 'index_show': '全22话', 'is_finish': 1, 'link': 'https://www.bilibili.com/bangumi/play/ss3398', 'media_id': 3398, 'order': '513.5万追番', 'order_type': 'fav_count', 'season_id': 3398, 'season_type': 1, 'title': '冰菓', 'title_icon': ''}, {'badge': '会员专享', 'badge_info': {'bg_color': '#FB7299', 'bg_color_night': '#BB5B76', 'text': '会员专享'}, 'badge_type': 0, 'cover': 'http://i0.hdslb.com/bfs/bangumi/327056a886f2c7cba6175a80eed2f78098cec5b1.png', 'index_show': '全13话', 'is_finish': 1, 'link': 'https://www.bilibili.com/bangumi/play/ss28615', 'media_id': 28222723, 'order': '510.7万追番', 'order_type': 'fav_count', 'season_id': 28615, 'season_type': 1, 'title': '刀剑神域 爱丽丝篇 异界战争', 'title_icon': ''}]
标志: 独家
链接: https://www.bilibili.com/bangumi/play/ss26801
追番人数: 917.3
名字: 鬼灭之刃
标志: 独家
链接: https://www.bilibili.com/bangumi/play/ss34004
追番人数: 783.3
名字: 鬼灭之刃(中配)
标志: 会员专享
链接: https://www.bilibili.com/bangumi/play/ss33802
追番人数: 750.7
名字: Re:从零开始的异世界生活 第二季
标志: 独家
链接: https://www.bilibili.com/bangumi/play/ss36174
追番人数: 708.0
名字: 工作细胞 第二季
标志: 独家
链接: https://www.bilibili.com/bangumi/play/ss24588
追番人数: 705.1
名字: 工作细胞
标志: 独家
链接: https://www.bilibili.com/bangumi/play/ss32982
追番人数: 691.1
名字: 辉夜大小姐想让我告白?~天才们的恋爱头脑战~
标志: 独家
链接: https://www.bilibili.com/bangumi/play/ss5997
追番人数: 644.9
名字: 埃罗芒阿老师
标志: 独家
链接: https://www.bilibili.com/bangumi/play/ss6339
追番人数: 632.2
名字: 欢迎来到实力至上主义的教室
标志: 独家
链接: https://www.bilibili.com/bangumi/play/ss5800
追番人数: 631.9
名字: 小林家的龙女仆
标志: 独家
链接: https://www.bilibili.com/bangumi/play/ss26274
追番人数: 623.4
名字: 辉夜大小姐想让我告白~天才们的恋爱头脑战~
标志: 会员专享
链接: https://www.bilibili.com/bangumi/play/ss32781
追番人数: 616.7
名字: 刀剑神域 爱丽丝篇 异界战争 -终章-
标志: 会员专享
链接: https://www.bilibili.com/bangumi/play/ss25739
追番人数: 614.4
名字: 关于我转生变成史莱姆这档事
标志: 会员专享
链接: https://www.bilibili.com/bangumi/play/ss25733
追番人数: 597.3
名字: 青春猪头少年不会梦到兔女郎学姐
标志: 独家
链接: https://www.bilibili.com/bangumi/play/ss21542
追番人数: 596.3
名字: 紫罗兰永恒花园
标志: 独家
链接: https://www.bilibili.com/bangumi/play/ss29325
追番人数: 577.1
名字: 某科学的超电磁炮T
标志: 会员专享
链接: https://www.bilibili.com/bangumi/play/ss29590
追番人数: 560.0
名字: Re:从零开始的异世界生活 新编集版
标志: 独家
链接: https://www.bilibili.com/bangumi/play/ss31779?theme=movie
追番人数: 556.5
名字: 紫罗兰永恒花园外传:永远与自动手记人偶
标志: 会员专享
链接: https://www.bilibili.com/bangumi/play/ss3461
追番人数: 540.5
名字: Re:从零开始的异世界生活
标志: 独家
链接: https://www.bilibili.com/bangumi/play/ss3398
追番人数: 513.5
名字: 冰菓
标志: 会员专享
链接: https://www.bilibili.com/bangumi/play/ss28615
追番人数: 510.7
名字: 刀剑神域 爱丽丝篇 异界战争
vis=LS("226644",base_style=LCS)
chart=pygal.Bar(style=vis,x_label_rotation=45,show_legend=False)
chart.title='B站2020年会员番剧追番数'
chart.x_labels=names
chart.add(' ',numb)
chart.render_to_file('bilibili.svg')
输出:AttributeError: 'NoneType' object has no attribute 'startswith'
头疼啊、、、、、、、