做动态图表没有数据?用Python就能获取( 二 )
for word in words:
try:
time.sleep(2)
startDate = '2020-10-01'
endDate = '2020-10-10'
area = 0
res = get_search_index(word, startDate, endDate, area)
result = res.split(',')
dates = get_date_list(startDate, endDate)
for num, date in zip(result, dates):
print(word, num, date)
with open('word.csv', 'a+', encoding='utf-8') as f:
f.write(word + ',' + str(num) + ',' + date + '\n')
except:
pass
get_area
get_word
得到的CSV文件结果如下 , 有两种形式的数据 。
一种是多个关键词每日指数数据 , 另一种是一个关键词各省市每日指数数据 。
文章插图
有了数据就可以用Python制作动图啦 。
import pandas as pd
import bar_chart_race as bcr
# 读取数据
# df = pd.read_csv('word.csv', encoding='utf-8', header=None, names=['name', 'number', 'day'])
df = pd.read_csv('area.csv', encoding='utf-8', header=None, names=['name', 'number', 'day'])
# 数据处理 , 数据透视表
df_result = pd.pivot_table(df, values='number', index=['day'], columns=['name'], fill_value=http://kandian.youth.cn/index/0)
# 生成GIF
# bcr.bar_chart_race(df_result, filename='word.gif', title='爱情公寓5演职人员热度排行')
bcr.bar_chart_race(df_result, filename='area.gif', title='国内各省市王者荣耀热度排行')
5行Python代码 , 来看一下效果如何 。
文章插图
文章插图
是成功实现了 , 就是配色有那么点渣 , 这个可自行修改颜色配置文件 , 让你的动图变得好看 。
文章插图
微博指数
百度搜索新浪的微博指数 , 打开网站一看 , 发现网页版无法使用 。
文章插图
此时我们只需打开开发者工具 , 将你的浏览器模拟为手机端 , 刷新网页即可 。
文章插图
可以看到 , 微指数的界面出来了 。
添加关键词 , 查看指数的数据接口 。
文章插图
请求是Post方法 , 并且不需要登陆微博账号 。
import re
import time
import json
import requests
import datetime
# 请求头信息
headers = """accept: application/json
accept-encoding: gzip, deflate, br
accept-language: zh-CN,zh;q=0.9
content-length: 50
content-type: application/x-www-form-urlencoded
cookie: '你的cookie'
origin:
referer: /index/newindex?visit_type=trend CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1
x-requested-with: XMLHttpRequest"""
# 将请求头字符串转化为字典
headers = dict([line.split(": ",1) for line in headers.split("\n")])
print(headers)
# 数据接口
url = '/index/ajax/newindex/getchartdata'
# 获取时间列表
def get_date_list(begin_date, end_date):
dates =
dt = datetime.datetime.strptime(begin_date, "%Y-%m-%d")
date = begin_date[:]
while date <= end_date:
dates.append(date)
dt += datetime.timedelta(days=1)
date = dt.strftime("%Y-%m-%d")
return dates
# 相关信息
names = ['汤唯', '朱亚文', '邓家佳', '乔振宇', '王学圻', '张艺兴', '俞灏明', '吴越', '梁冠华', '李昕亮', '苏可', '孙骁骁', '赵韩樱子', '孙耀琦', '魏巍']
# 获取微指数数据
for name in names:
try:
# 获取关键词ID
url_id = '/index/ajax/newindex/searchword'
data_id = {
'word': name
}
html_id = requests.post(url=url_id, data=http://kandian.youth.cn/index/data_id, headers=headers)
pattern = re.compile(r'li wid=\\\"(.*?)\\\" word')
id = pattern.findall(html_id.text)[0]
# 接口参数
data = http://kandian.youth.cn/index/{
'wid': id,
'dateGroup': '1month'
}
time.sleep(2)
# 请求数据
html = requests.post(url=url, data=http://kandian.youth.cn/index/data, headers=headers)
result = json.loads(html.text)
# 处理数据
if result['data']:
values = result['data'][0]['trend']['s']
startDate = '2019-01-01'
endDate = '2020-01-01'
dates = result['data'][0]['trend']['x']
# 保存数据
for value, date in zip(values, dates):
print(name, value, date)
with open('weibo.csv', 'a+', encoding='utf-8') as f:
f.write(name + ',' + str(value) + ',' + date + '\n')
except:
- 技术|做“视频”绿厂是专业的,这项技术获人民日报评论点赞
- 王文鉴|从工人到千亿掌门人,征服华为三星,只因他36年只坚持做一件事
- 桌面|日常使用的软件及网站分享 篇一:几个动态壁纸软件和静态壁纸网站:助你美化你的桌面
- 巅峰|realme巅峰之作:120Hz+陶瓷机身+5000mAh 做到了颜值与性能并存
- 现货供应|卢伟冰说到做到!120Hz+一亿像素,狂销30万首销现货供应
- 健身房|乐刻韩伟:产业互联网中只做单环节很难让数据发挥大作用
- 页面|流程图怎样画?老板要我帮他做个组织结构图
- 联网时代|34岁转行做程序员是否还有成功的机会
- 用户|把更多主动权交还给用户,市面上敢这么做的或许只有OriginOS了
- 核酸|北京:所有入市交易冷链产品做到不验核酸不入库