新聞中心
這篇文章主要介紹“R語(yǔ)言中如何使用RCurl包”的相關(guān)知識(shí),小編通過(guò)實(shí)際案例向大家展示操作過(guò)程,操作方法簡(jiǎn)單快捷,實(shí)用性強(qiáng),希望這篇“R語(yǔ)言中如何使用RCurl包”文章能幫助大家解決問(wèn)題。
創(chuàng)新互聯(lián)是一家專(zhuān)注于成都做網(wǎng)站、成都網(wǎng)站設(shè)計(jì)與策劃設(shè)計(jì),夏邑網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)做網(wǎng)站,專(zhuān)注于網(wǎng)站建設(shè)十余年,網(wǎng)設(shè)計(jì)領(lǐng)域的專(zhuān)業(yè)建站公司;建站業(yè)務(wù)涵蓋:夏邑等地區(qū)。夏邑做網(wǎng)站價(jià)格咨詢(xún):18980820575
這一段時(shí)間在研究R里面的數(shù)據(jù)抓取相關(guān)包,時(shí)不時(shí)的能發(fā)掘出一些驚喜。
比如今天,我找到了一個(gè)自帶請(qǐng)求器的解析包,而且還是嵌入的pantomjs無(wú)頭瀏覽器,這樣就不用你再傻乎乎的再去裝個(gè)selenium驅(qū)動(dòng),也不用借助任何請(qǐng)求器(RCurl或者h(yuǎn)ttr)包就可以自動(dòng)解析帶有js腳本的HTML文檔。
耳聽(tīng)為虛,眼見(jiàn)為實(shí),還記得之前講解表格數(shù)據(jù)抓取的那一節(jié),遇到的天氣數(shù)據(jù)表格,里面的數(shù)據(jù)拿不到,有些棘手。害得我動(dòng)用了RSelenium調(diào)用了plantomjs才得以解決,但是!
今天講解的這個(gè)包將所有的任務(wù)量縮減到一句代碼!
library("rvest") URL<-"https://www.aqistudy.cn/historydata/monthdata.php?city=北京" %>% xml2::url_escape(reserved ="][!$&'()*+,;=:/?@#")
大家可以試一試使用普通的請(qǐng)求方法是否可以成功獲取里面的表格(要是成功了算我輸?。。。?/p>
使用RCurl包請(qǐng)求!
header<-c("User-Agent"="Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.79 Safari/537.36") mytable <- getURL(URL,httpheader=header,.encoding="UTF-8") %>% htmlParse(encoding ="UTF-8") %>% readHTMLTable(header=TRUE) $`NULL` NULL
這是多大仇多大怨啊~_~
使用rvest試一試:
mytable <- URL %>% read_html(encoding ="UTF-8") %>% html_table(header=TRUE) %>% `[[`(1) [1] 月份 AQI 范圍 質(zhì)量等級(jí) PM2.5 PM10 SO2 CO NO2 O3
恩,對(duì),這次進(jìn)步了,拿到了表頭,可是這有什么卵用!?。?/p>
使用selenium驅(qū)動(dòng)瀏覽器
#java -jar D:/selenium-server-standalone-3.3.1.jar
#system("java -jar D:/selenium-server-standalone-3.3.1.jar",intern=FALSE)
start_session(root="http://localhost:4444/wd/hub/",browser ="phantomjs")
post.url(URL)
mytable<-page_source() %>% stri_conv(from="utf-8") %>% read_html() %>% html_table()
quit_session()
這次總算拿到了!數(shù)一數(shù)寫(xiě)了多少字的代碼!
有木有更加快捷的方法呢,當(dāng)然有啦!
接下來(lái)瞪大眼睛看這一款神器!
使用rdom包:
stopifnot(Sys.which("phantomjs") != "")
#以上代碼檢測(cè)系統(tǒng)路徑中是否含有phantomjs瀏覽器
#如果沒(méi)有下載過(guò)phantomjs瀏覽器或者下載過(guò)但是沒(méi)有加入系統(tǒng)路徑,
#記得從新操作一下,否則一下函數(shù)無(wú)法運(yùn)行!devtools::install_github("cpsievert/rdom")
#安裝rdom包(如果總是提示timeout的話(huà),記得加載一下curl包)
library("rdom")
tbl <- rdom(URL) %>% readHTMLTable(header=TRUE) %>% `[[`(1)
有木有看清楚什么情況,沒(méi)有,已經(jīng)完事兒,真的是只有一行代碼!
似不似,有點(diǎn)兒驚訝,rdom后臺(tái)調(diào)用了plantomjs瀏覽器渲染了整個(gè)html目標(biāo)文檔(包含里面的所有script標(biāo)簽里面的js動(dòng)態(tài)腳本),所以readHTMLTable函數(shù)才有機(jī)會(huì)提取里面的表格(而這個(gè)過(guò)程,普通請(qǐng)求器比如RCurl或者h(yuǎn)ttr都沒(méi)有權(quán)限辦到!),是不是很膩害呀!
下面這一句只是稍微修復(fù)一下編碼!
names(tbl) <- names(tbl) %>% stri_conv(from="utf-8") DT::datatable(tbl)
rdom是一個(gè)很小眾的包,但是它的設(shè)計(jì)理念有點(diǎn)兒逆天,整個(gè)包只有一個(gè)函數(shù)——rdom,和包名相同,它的工作只有一個(gè),就是按照真實(shí)瀏覽器渲染HTML文檔的模式去渲染整個(gè)HTML文檔。在后臺(tái)調(diào)用plantomjs來(lái)處理渲染的過(guò)程,之后你可以自由的使用其他R中的高效快捷函數(shù)進(jìn)行元素提取。
關(guān)于“R語(yǔ)言中如何使用RCurl包”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí),可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,小編每天都會(huì)為大家更新不同的知識(shí)點(diǎn)。
本文名稱(chēng):R語(yǔ)言中如何使用RCurl包
本文路徑:http://www.dlmjj.cn/article/gpjesd.html