R语言如何获取数据
发表于:2025-02-07 作者:千家信息网编辑
千家信息网最后更新 2025年02月07日,这篇文章主要讲解了"R语言如何获取数据",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"R语言如何获取数据"吧!今天只分享数据获取的代码,为了显得项目规范
千家信息网最后更新 2025年02月07日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安全错误
数据库的锁怎样保障安全
河南信息化软件开发价格优惠
中兴软件开发在线笔试
多米诺数据库
online服务器地址
软件开发从哪方面入手
建筑工程危险源数据库
中国法律条文关于网络安全
软件开发蓝图模板
为给服务器管理员
高中数据库应用软件
象山敏捷软件开发工程
软件开发中的挂载
农行软件开发中心北京待遇
怎么做好网络安全工作总结
网络安全与执法月薪
一个数据库表应有哪些字段
南通理工学院计算机网络技术专业
怎么查服务器内存满的原因
移动互联网上榜科技
go语言连接数据库的一些方法
哪家公司提供安卓软件开发
免费的数据库哪个好
网络安全工信部最新资讯
数据库er图创建视频
物保宝网络技术北京有限公司
李芒果空岛服务器
兰州软件开发解决方案公司
职高数据库课本
scum要租服务器吗
云顶之弈手游美服服务器英文名