R语言如何获取数据
发表于:2025-02-19 作者:千家信息网编辑
千家信息网最后更新 2025年02月19日,这篇文章主要讲解了"R语言如何获取数据",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"R语言如何获取数据"吧!今天只分享数据获取的代码,为了显得项目规范
千家信息网最后更新 2025年02月19日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安全错误
数据库的锁怎样保障安全
网络安全服务创新
计算机网络技术重点学什么
青海信息化土地资产管理软件开发
网络技术应用 广东版
ce修改模拟器内存数据库
网络安全思政课程案例
软件开发 智能模型 提出
金腾5g服务器能赚钱吗
运城市网信网络技术有限公司
福建网络安全防护等级
中兴软件开发和测试
网络安全二级违规的行为有哪些
慈溪软件开发地址在哪
企业微信扫码进群显示服务器异常
北京企业软件开发常用解决方案
rust被封服务器是怎么样的
广联达软件开发流程
数据库表单控件有哪些
邯郸市网络技术
安徽服务器机柜一般多少钱
达梦数据库结束关键字
原神id2开头是什么服务器
数据库中宽度和高度的代码
延时网络技术开发
网络安全教育专题公益短片
网络安全和信息化领域标准
35654806服务器
软件开发减税申请
空间数据库技术的难点
网络安全服务器认证证书