Baidu_migration_crawler是一个百度迁徙数据爬虫
新冠肺炎抗疫形势严峻,国内多家公司都为抗疫贡献了自己的力量,如丁香园的疫情播报和地图,百度迁徙的人口流动信息等。这些数据能够为分析和预测疫情传播、发展提供重要基础。
为了让百度迁徙提供的人口流动数据更便于分析,笔者使用Python制作了Baidu_migration_crawler工具来进行自动的数据爬取和解析存储。
- 注:使用该工具需要先安装MongoDB数据库(非常适合存储这种形式的数据)和相关Python依赖
功能介绍
爬取百度迁徙上的数据,支持每日增量爬取以下内容:
- 人口迁出数据(比例):市级->省级、市级->市级、省级->省级、省级->市级
- 人口迁入数据(比例):市级->省级、市级->市级、省级->省级、省级->市级
- 人口迁出数据(数值/规模指数):市级、省级
- 人口迁入数据(数值/规模指数):市级、省级
- 全国迁出数据(比例):市级、省级
- 全国迁入数据(比例):市级、省级
- 城内迁徙数据:市级
项目地址
数据样例
环境依赖
- requests
- tqdm
- pymongo
- MongoDB数据库
- json
使用方法
location_ids.txt
文件存放了待爬取的省级、市级行政单位的行政区划代码,可根据需要自行修改
出于方便存取的考虑,数据存储使用了MongoDB数据库,需要安装相应的环境才能使用本程序。如有需要请修改connect_str
为自己的数据库连接URL
执行main.py
中的fetch_timerange()
方法,传入格式为YYYYMMDD
的起止日期即可进行爬取,如20200402
。若仅需要爬取一天,则设置相同的起止日期
数据结构
数据包含三个Collection,分别为全国分布数据(cn_distribution)、省级迁徙数据(province_flow)和市级迁徙数据(city_flow):
- 全国分布数据(cn_distribution),每日的数据包含4个Document,分别为省级的迁入(move_in)、迁出(move_out)和市级的迁入、迁出情况。每个Document中包含各省或市的具体情况数组。
- 省级迁徙数据(province_flow),每日的数据包含33 * 4个Document,即我国33个省级行政单位(含直辖市及港澳,不含台湾地区)每日的省级迁入、迁出和市级迁入、迁出情况。
- 市级迁徙数据(city_flow),每日的数据包含368 * 4个Document,即百度迁徙所收录的368个市级行政单位(为方便分析,含直辖市及港澳,不含台湾地区)每日的省级迁入、迁出和市级迁入、迁出情况。