R语言如何获取数据
发表于:2026-11-04 作者:千家信息网编辑
千家信息网最后更新 2026年11月04日,这篇文章主要讲解了"R语言如何获取数据",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"R语言如何获取数据"吧!今天只分享数据获取的代码,为了显得项目规范
千家信息网最后更新 2026年11月04日R语言如何获取数据
这篇文章主要讲解了"R语言如何获取数据",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"R语言如何获取数据"吧!
今天只分享数据获取的代码,为了显得项目规范性(其实就是装X),我第一次使用了Rstudio中的Create Projects菜单创建了本地项目仓库(以前写R代码太飘逸了,写的龙飞凤舞,完全不顾及别人能不能看懂,以后不可以这样了,因为工作中已经吃过很大亏了)。
因为是含有二级列表页,所以第一步的想法自然是先爬取年份链接,然后遍历链接抓取每一年份中的文档。
可能因为自己文科生思维的问题,不太习惯直接写双层for循环(因为看到会不适),所以遇到这种需要二次遍历的,我一般都会拆成两个小步骤去进行:
1、遍历年份对应的对应年政府工作报告主页链接:
## !/user/bin/env RStudio 1.1.423
## -*- coding: utf-8 -*-
## Pages_links Acquisition## 加载必要的安装包:library("rvest")library("stringr")library("Rwordseg")library("wordcloud2")library("dplyr")#主网址
url <- "http://www.gov.cn/guowuyuan/baogao.htm"#提取二级链接
txt<-read_html(url) %>% html_nodes("#history_report") %>% html_nodes("p") %>% html_text()#提取年份&链接信息:
Base <- read_html(url) %>% html_nodes("div.history_report") %>% html_nodes("a")Year <- Base %>% html_text(trim = TRUE) %>% as.numeric()Links <- Base %>% html_nodes("a") %>% html_attr("href") %>% str_trim("both")#合并成数据框:
Reports_links <- data.frame( Year = Year, Links = Links, stringsAsFactors = FALSE )#存放到本地目录中
if (!dir.exists("data")){ dir.create("data") write.csv( Reports_links, "./data/Reports_links.csv", row.names=FALSE ) }以上代码为了便于理解,我都拆成单句展示了,github中代码都会是封装好的模块化函数。
2、从每一个年份对应的链接中获取整个政府工作报告的文档文本:
#加载包
library("rvest")
library("dplyr")
library("magrittr")
library("doParallel")
library("foreach")#读取年份及对应链接
Links_data <- read.csv("./data/Reports_links.csv",stringsAsFactors = FALSE) %>% arrange(Year)#创建文档提取函数:
Get_Corpus_Report <- function(i){ url = grep(i,Links_data$Year) %>% Links_data$Links[.] read_html(url) %>% html_nodes("td.p1,tr > td,div.pages_content") %>% html_text("both") %>% cat(file = sprintf("./data/Corpus/%d.txt",i)) }以上需用到较为基础的CSS表达式配色rvest来提取文档,如果你还不太了解这块的内容,赶快通过菜单中的网络数据获取笔记来恶补。
没有构造循环,这里用了foreach包提供的多进程并行爬取方案来处理多循环问题(虽然这里的量级还体现不出来并行的优势,但是整体代码要比写循环简介、高效)
system.time({
if (!dir.exists("./data/Corpus")){ dir.create("./data/Corpus") } cl<- makeCluster(4) registerDoParallel(cl) tryCatch({ foreach( i= Links_data$Year, .combine = c, .packages = c("rvest","magrittr") ) %dopar% Get_Corpus_Report(i) }, error = function(e) { print(e) }, finally = stopCluster(cl) )})感谢各位的阅读,以上就是"R语言如何获取数据"的内容了,经过本文的学习后,相信大家对R语言如何获取数据这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!
数据
链接
年份
语言
代码
文档
循环
内容
学习
工作
函数
就是
工作报告
报告
政府
菜单
问题
项目
很大
不适
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
科技互联网产品
互联网金融 科技
互联网络科技有限公司
互联网科技公司官网
互联网科技logo设计
互联网科技小额贷款
狮子座互联网科技培训
卓越科技互联网 招聘
甘肃拓世互联网科技有限公司
蓝色互联网科技
汉立互联网科技有限公司联系电话
互联网科技博主是什么意思
互联网科技革命什么开始
互联网媒体平台算高科技产业
区块链结合互联网科技
伍佰万互联网科技怎么赚钱
厦门江牛科技互联网
工业互联网科技创业
同城互联网络科技
科技信息时代互联网发展
万易互联网科技有限公司
远拓互联网科技
科技创新互联网企业
济南和联互联网科技有限公司
开启互联网科技时代小说
互联网保险科技创业
黑科技 体验场景 互联网大会
伍佰万互联网科技怎么赚钱
广西科技产业互联网是什么
马化腾互联网科技教学