之前一直没有好的办法采集,最近发现一个神奇的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文件夹内,如下图。



广而告之