之前一直没有好的办法采集,最近发现一个神奇的qdata包可以采集百度指数不太好采集。
安装
打开命令行(cmd、terminal),
# 避免与pycryptodome冲突
pip3 uninstall pycrypto
#安装最新的qdata
pip3 install --upgrade qdata
百度指数
qdata包内置百度指数的省份(城市)对应的地区代码,以省份代码为例
from qdata.baidu_index import PROVINCE_CODE, CITY_CODE
PROVINCE_CODE
Run
{'山东': '901',
'贵州': '902',
'江西': '903',
'重庆': '904',
'内蒙古': '905',
'湖北': '906',
'辽宁': '907',
'湖南': '908',
....
'甘肃': '925',
'新疆': '926',
'河南': '927',
'安徽': '928',
'山西': '929',
'海南': '930',
'台湾': '931',
'西藏': '932',
'香港': '933',
'澳门': '934'}
案例
采集
- 时间段
2022-05-01 ~ 2022-08-01
- 地区
山东
- 关键词
['疫情', '锻炼', '居家']
的百度指数数据。
准备你的cookie
在命令行 Python环境 下运行
from qdata.baidu_login import get_cookie_by_qr_login
get_cookie_by_qr_login()
上方代码运行结束后,弹出一个二维码窗体。
使用百度相关app,笔者使用 百度网盘app 扫码, 命令行内出现了一串字符串就是cookie。
代码
import time
from qdata.baidu_index import PROVINCE_CODE
from qdata.baidu_index import get_search_index
import csv
province = '山东'
keywords = ['网购', '居家']
start_dt = '2022-07-01'
end_dt = '2022-08-01'
#你的cookie
cookie = '你的cookie'
#数据存储于data文件夹内
with open('data/{}.csv'.format(province), 'a+', encoding='utf-8', newline='') as csvf:
fieldnames = ['province', 'type', 'date', 'index']
writer = csv.DictWriter(csvf, fieldnames=fieldnames)
writer.writeheader()
for info in get_search_index(keywords_list = [keywords],
start_date = start_dt,
end_date = end_dt,
area = PROVINCE_CODE[province],
cookies = cookie):
data = {'province': province,
'type': info['type'],
'date': info['date'],
'index': info['index']}
print(data)
writer.writerow(data)
Run
{'province': '山东', 'type': 'all', 'date': '2022-07-01', 'index': '200'}
{'province': '山东', 'type': 'all', 'date': '2022-07-02', 'index': '148'}
{'province': '山东', 'type': 'all', 'date': '2022-07-03', 'index': '257'}
...
{'province': '山东', 'type': 'pc', 'date': '2022-07-01', 'index': '59'}
{'province': '山东', 'type': 'pc', 'date': '2022-07-02', 'index': '0'}
{'province': '山东', 'type': 'pc', 'date': '2022-07-03', 'index': '118'}
...
{'province': '山东', 'type': 'wise', 'date': '2022-07-01', 'index': '141'}
{'province': '山东', 'type': 'wise', 'date': '2022-07-02', 'index': '148'}
{'province': '山东', 'type': 'wise', 'date': '2022-07-03', 'index': '139'}
type字段的含义
- all 信息来自
PC+移动
- pc 信息来自
PC
- wise 信息来自
移动
山东 2022-07-01 PC+移动
的指数是 200
, 刚好等于 pc59+移动141
,也等于 网购65+居家135
。
最后数据存储于data文件夹内,如下图。