R语言如何获取数据
发表于:2024-11-26 作者:千家信息网编辑
千家信息网最后更新 2024年11月26日,这篇文章主要讲解了"R语言如何获取数据",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"R语言如何获取数据"吧!今天只分享数据获取的代码,为了显得项目规范
千家信息网最后更新 2024年11月26日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安全错误
数据库的锁怎样保障安全
软件开发模型特点与区别
怀旧服服务器蓝屏
网络安全司法解释有多少
贵州有软件开发的吗
无线传感网络技术发展过程
access数据库 应用
怎么连接数据库中的两个表
数据库打补丁起不来
2021年网络安全宣传周素材
如何看服务器安全策略
松江区即时网络技术费用
网络安全执法检查动态
我的世界2b2t是一个怎样的服务器
网络安全知识例题
拱墅软件开发
数据库表关系图闭环
计算机网络技术主要参考文献
clay粘土服务器tnt改了吗
女生学什么网络技术好
构建高校网络安全系统
连接云服务器的软件哪个好
数据库安全及维护
oracle数据库外键
新罗区佐晖网络技术工作室
长沙 网络安全 智能制造
数据库表关系图闭环
软件开发整改报告书
代理服务器的使用
东营联想服务器怎么收费
大数据时代的软件开发模型