R 语言:百度地图迁徙大数据爬取与可视化

其实之前蛮多小伙伴跟我说过想学习百度迁徙指数的爬取和可视化,今天终于把这个教程写好啦,其实蛮简单的,就是一个 json 格式的数据处理和 geom_curve() 图层的使用,下面我们来一步步学习如何爬取这个数据和绘制迁徙图吧!

准备工作

  1. 我们要爬取的目标网站是:https://qianxi.baidu.com/2020/
  2. 绘制地图需要市级地图 + 省级地图数据,我已经准备好放置在附件中了;
  3. 高德地图接口。高德地图接口的申请我之前在很多课程中提到了;

加载相关的 R 包

library(jsonlite)
library(tidyverse)
library(hrbrthemes)
library(ggplot2)

jsonlite 是一个非常方便的处理 json 格式的数据的包。

北京市迁入数据爬取

首先我们爬取北京市的迁入数据作为演示,通过简单的网页分析我们就会发现北京市的迁入数据在这里:

https://huiyan.baidu.com/migration/cityrank.jsonp?dt=province&id=110000&type=move_in&date=20200315&callback=

不过这个链接得到的结果是个外面有个括号的,但是这个非常容易处理,我们只需要把得到的结果作为字符读入然后去除括号再使用 fromJSON() 函数解析即可:

# 北京市迁入来源地
readLines("https://huiyan.baidu.com/migration/cityrank.jsonp?dt=province&id=110000&type=move_in&date=20200315&callback=") %>%
str_remove_all("[\\(\\)]") %>%
fromJSON() %$%
.$data$list %>%
as_tibble() %>%
transmute(from = paste0(province_name, city_name),
value,
to = "北京市") -> beijingdf

beijingdf
#> # A tibble: 100 x 3
#> from value to
#> <chr> <dbl> <chr>
#> 1 河北省廊坊市 22.4 北京市
#> 2 河北省保定市 8.21 北京市
#> 3 天津市天津市 5.2 北京市
#> 4 河北省张家口市 3.88 北京市
#> 5 河北省承德市 3.47 北京市
#> 6 河北省邯郸市 3 北京市
#> 7 河北省石家庄市 1.98 北京市
#> 8 河北省唐山市 1.96 北京市
#> 9 河北省沧州市 1.79 北京市
#> 10 河北省衡水市 1.47 北京市
#> # … with 90 more rows

这样我们就得到了这一百组数据,为了在地图上绘制出,我们需要知道这些城市的经纬度,使用高德地图提供的地理编码接口即可,我先编写了一个输入中文地址输出经纬度的函数:

….

更多内容欢迎加入课程学习!

点击这里跳转到 RStata 短书平台获取附件:R 语言:百度地图迁徙大数据爬取与可视化

评论