亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

R語言如何獲取數據

發布時間:2022-03-28 10:23:30 來源:億速云 閱讀:627 作者:iii 欄目:大數據

這篇文章主要講解了“R語言如何獲取數據”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“R語言如何獲取數據”吧!

今天只分享數據獲取的代碼,為了顯得項目規范性(其實就是裝X),我第一次使用了Rstudio中的Create Projects菜單創建了本地項目倉庫(以前寫R代碼太飄逸了,寫的龍飛鳳舞,完全不顧及別人能不能看懂,以后不可以這樣了,因為工作中已經吃過很大虧了)。

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  )   }

R語言如何獲取數據

以上代碼為了便于理解,我都拆成單句展示了,github中代碼都會是封裝好的模塊化函數。

R語言如何獲取數據

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語言如何獲取數據

感謝各位的閱讀,以上就是“R語言如何獲取數據”的內容了,經過本文的學習后,相信大家對R語言如何獲取數據這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

安顺市| 崇州市| 安阳县| 萨嘎县| 临潭县| 广灵县| 宝鸡市| 湘乡市| 苍山县| 台北市| 澎湖县| 昌邑市| 新化县| 柘荣县| 观塘区| 平顶山市| 琼中| 南丹县| 馆陶县| 勃利县| 来凤县| 志丹县| 甘肃省| 绥棱县| 新余市| 紫云| 融水| 阿克陶县| 繁峙县| 仙游县| 肇东市| 沽源县| 东辽县| 博野县| 札达县| 荥阳市| 新巴尔虎右旗| 揭西县| 始兴县| 法库县| 营山县|