R语言-007-爬取各城市疫情搜索高峰进度

一、百度疫情指数

  1. 全国各城市疫情搜索高峰进度


    image.png

二、爬取内容

  • 如上图分城市疫情搜索高峰进度情况

三、R语言实战

# @项目名称:爬取百度疫情指数
# @项目时间:2022-12-21
# @项目作者:斑专先生

# 加载包
library(rvest)
library(dplyr)
library(jsonlite)
library(stringr)
library(rlist)

# 爬虫目标地址
bdyq_url <- 'https://motion.baidu.com/activity/yiqing_predict/main?province=%E5%85%A8%E5%9B%BD'
# 获取json字符串
list_content <- read_html(bdyq_url) %>% html_nodes('script') %>% .[9] %>% html_text2()
start_num <- str_locate(list_content,'pageInfo') %>% .[1] - 2
json_text <- list_content %>% substr(.,start_num,nchar(.)) %>% fromJSON()

# 解析到数据框
bd_df <- json_text$cardData$cards454146550$data$listData$list[[2]] %>% as.data.frame()
# 时间戳转日期
time2date <- function(x){
  as.POSIXlt((x+3600*8000)/1000,origin='1970-01-01',tz='UTC') %>% as.Date()
}
# 结果集
res_df <- bd_df %>% mutate(startTime=time2date(startTime),
                           firstPeak =time2date(firstPeak),
                           firstResult =time2date(firstResult)) %>%
  mutate(peakDes=ifelse(status==0,paste0('上升至',peakRate,'%'),paste0('回落至',peakRate,'%'))) %>%
  select(province,city,startTime,firstPeak,firstResult,peakDes)
names(res_df) <- c('省份','城市','开始日期','搜索峰值日','高峰结束日','峰值进度')
# 导出
write.csv(res_df,'全国各城市疫情搜索高峰进度.csv',row.names=FALSE)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容