• R语言
  • 用R语言数据抓取网站数据

我想问个问题,求人解答,这是一个随便找的网站http://www.tianqi.com/air/ 我想要将里面的数据用R读下来,怎么弄,我知道用XML和Rcul
library(rvest)
url = 'http://www.tianqi.com/air/'

d1 = url %>% html_session() %>% html_nodes("li .td-1st") %>% html_text() 
d2 = url %>% html_session() %>% html_nodes(".td-2nd a[href*='air']") %>%  html_text()
qu = url %>% html_session() %>% html_nodes(".td-4rd") %>% html_text()
d3 = qu[c(seq(1,length(qu),2))]
d4 = url %>% html_session() %>% html_nodes(".td-4rd em") %>% html_text() 

data = data.frame(排名 = d1,城市 = d2,空气质量指数 = d3,空气质量 = d4)
乱码自己解决。
[未知用户]

itelin兄太赞了!
rvest包太赞了!!

找了一下,
附html_nodes函数里面用到的CSS selector的语法网址: http://www.w3.org/TR/css3-selectors/
[未知用户]
我想起来了,几年前就是你把COS上的文章给读出来了,但你用的那个语言俺们不会,这次正好rvest推出,结果轻松就在R中实现了。CSS要比XPATH方便角怪。
惭愧,惭愧,我的方法太麻烦了,不具备一般性。
还是你介绍的这个方法最简捷,大大节约时间啊!
require(XML)
url = "http://www.tianqi.com/air/"
matrix(unlist(readHTMLList(url, which = 3, elFun = getChildrenStrings, encoding = "GBK"))[-(1:9)], ncol = 4, byrow = TRUE)
[未知用户]
太感谢您了, :-)
[未知用户]
没有乱码的,自己保存下格式就好了,谢谢您
[未知用户]
在我的机器里面是有乱码的,你的怎么没有,你是怎么保存格式的,发过来看看,我好查查原因。
[未知用户]
library(rvest)
url = 'http://www.tianqi.com/air/'

d1 = url %>% html_session() %>% html_nodes("li .td-1st") %>% html_text(encoding="UTF-8") 
d2 = url %>% html_session() %>% html_nodes(".td-2nd a[href*='air']") %>%  html_text(encoding="UTF-8")
qu = url %>% html_session() %>% html_nodes(".td-4rd") %>% html_text(encoding="UTF-8")
d3 = qu[c(seq(1,length(qu),2))]
d4 = url %>% html_session() %>% html_nodes(".td-4rd em") %>% html_text(encoding="UTF-8") 

data = data.frame(排名 = d1,城市 = d2,空气质量指数 = d3,空气质量 = d4)

head(data)
print(data)
write.table(data,file='D:/RstudioWorkPlace/Internetanother.txt',row.names=T,quote=F)
加了一个encoding="UTF-8"
[未知用户]
见鬼了,我加了还是乱码。
[未知用户]
你存一下看看,存了有可能能好
这样可以吗?
library(rvest)
url='http://www.tianqi.com/air/'
d1=url %>% html_session() %>% html_nodes("li .td-1st") %>% html_text()
d2=url %>% html_session() %>% html_nodes(".td-2nd a[href*='air']") %>% html_text()
qu=url %>% html_session() %>% html_nodes(".td-4rd") %>% html_text()
d3=qu[c(seq(1,length(qu),2))]
d4=url %>% html_session() %>% html_nodes(".td-4rd em") %>% html_text()
data=data.frame(排名=d1,城市=d2,空气质量指数=d3,空气质量=d4,stringsAsFactors=FALSE)
for(i in 1:ncol(data)) Encoding(data[,i])="UTF-8"
write.table(data,file='api.txt',row.names=T,quote=F)
[未知用户]
大神,请问你有rvest方面的资料么?
[未知用户]
你能出来就可以了啊
[未知用户]
哪有什么资料呀,看随包自带的3个文件。