一、百度复苏指数
-
百度地图复苏指数
二、爬取内容
- 如上图分城市(100城)复苏指数,包括消费指数、迁徙指数和拥堵指数。
三、R语言实战
# @项目名称:爬取百度疫情指数
# @项目时间:2023-1-3
# @项目作者:斑专先生
# 加载包
library(rvest)
library(dplyr)
library(jsonlite)
library(stringr)
library(rlist)
library(openxlsx)
# 设置路径
setwd('D:/')
# 构建函数,获取每个tab数据
get_city <- function(i){
# 爬虫目标地址
bd_url <- 'https://ugc.map.baidu.com/diymap/index_map/main?sv=&cuid=&os=&zid=&business=return_work&city_id=131&tab_key='
tab_key <- c('migrate','jam','consume')
tab_name <- c('迁徙指数','拥堵指数','消费指数')
html_url <- str_c(bd_url,tab_key[i])
# 获取json字符串转化成list
list_content <- read_html(html_url) %>% html_text2() %>% fromJSON()
# 数据框
bd_df <- list_content$data$modules$ranking$list %>%
mutate(week_relative=as.numeric(week_relative)/100,
update=list_content$data$modules$tendency$points$show_name)
names(bd_df) <- c('城市名称','排名','排名变化',tab_name[i],'较上周同期','更新日期')
return(bd_df)
}
# 保存到excel,一个文件多个sheet
wb <- createWorkbook()
addWorksheet(wb, sheetName = tab_name[1])
addWorksheet(wb, sheetName = tab_name[2])
addWorksheet(wb, sheetName = tab_name[3])
writeData(wb, sheet = 1, get_city(1))
writeData(wb, sheet = 2, get_city(2))
writeData(wb, sheet = 3, get_city(3))
saveWorkbook(wb, str_c("百度复苏指数_",Sys.Date(),".xlsx"), overwrite = TRUE)