百度迁徙平台(百度慧眼)几乎是日前最具有参考价值的中国人口迁徙数据,许多论文以此为数据基础。但在其官网上既没有展示所有的数据,也没有提他们有公开的接口,只有一句“获取详情数据请点击联系我们”。实际上除了没有给出公开的文档以外,百度迁徙平台不仅留了免费的接口,还能获取几乎所有的数据。感觉百度的意思就是:你有能力爬,我们愿意把数据给你;你没能力爬,那就花钱找我们要。 2024 年初 GitHub 上没有仍然在更新的、满足相同需求的代码,我们尝试抛砖引玉补齐这些,并整理好信息为后来人提供帮助。
2024.12.6 对代码进行了测试,似乎仍有效。
注:似乎部分日期的部分数据缺失。如果不幸通过本仓库的方法获取到的数据中,您需要的日期刚好没有数据,也许可以尝试直接联系百度迁徙获得……
以下面的接口为例。
接口一共有4个:cityrank、provincerank、lastdate、historycurve。其中 historycurve 比较特殊,直接返回历史上所有日期的数据。
请参考main.py
中的注释。以下给出简要说明:
dt是级别。可选的值有:country、province、city。
六位数,代表区域(可以是省,也可以是市),如:360100。如果是 dt 是 country,不需要给这个参数。
move_in, move_out 分别代表迁入迁出数据。
长度为8、格式为年月日的日期,如:20240130。如果接口是 historycurve,不需要给这个参数。
callback是一个时间戳,他调取的时候格式为:jsonp_X_Y
,其中X经实验为13位的毫秒级时间戳,Y是7位数字,未发现明显规律(估计也是时间)。
爬取的时候,甚至不需要填写这个。它只是代表“我给你返回的数据确实是你这次获取的数据”。
运行main.py
,只需要修改所有标记了“请修改这里”的地方为你所需要的数据即可。所有爬到的 json 数据会保存在./data/
下面。如果需要改为其他的格式(如 csv),可以在代码中操作 json_data。
可以提 Issue 或 发送邮件 联系我。我更建议您提 Issue,这样其他人也可以看到并参与讨论您的问题!
如果您觉得有用,请点一个 Star!