R语言:rvest包+SelectorGadget抓取链家杭州二手房数据

bigdataway 提交于 周四, 08/03/2017 - 16:06

R语言:rvest包+SelectorGadget抓取链家杭州二手房数据

R语言:rvest包+SelectorGadget抓取链家杭州二手房数据

自打春节后从家里回到学校以来就一直在捣鼓爬虫,总琢磨着个抓些数据来玩玩,在文档里保存一些自己的datasets。从一开始学Python3写scrapy框架到现在的rvest包R语言数据抓取,好歹有了自己固定的爬虫操作模式,这期间学着别人爬过当当网的商品数据,爬过豆瓣电影和图书top250,还爬过前程无忧的招聘信息等等,既然有了一些R语言的爬虫经验,那这个公众号的第一次推送就从用rvest+SelectorGadget抓取链接杭州二手房数据开始吧。

rvest包简介

rvest包是Hadley Wickham大神开发的一个专门用于网络数据抓取的R语言包,目前的发行版本为0.3.2,关于rvest包的描述以及用法可参考rvest帮助文档,花上一点时间阅读帮助文档,相信你就可以写出自己的爬虫了。

help(package=“rvest”)

rvest帮助文档: http://127.0.0.1:17483/library/rvest/html/00Index.html

csdn中文版版:

http://blog.csdn.net/sadfasdgaaaasdfa/article/details/45372307

R语言:rvest包+SelectorGadget抓取链家杭州二手房数据

rvest包基础语法

library(rvest)

google <- read_html("http://google.com", encoding = "ISO-8859-1")

#解析网页,规定编码

google %>% xml_structure()

google %>% html_nodes("div")%>% html_text()

#根据html标签节点读取位置信息,抓取想要的数据

SelectorGadget简介

http://selectorgadget.com/

SelectorGadget是一款开源工具,为复杂网站的元素生成CSS选择器,有了这款神器,在定位html节点信息时将变得无比轻松,也支持Xpath表达式。

rvest+SelectorGadget抓取杭州二手房信息

R语言:rvest包+SelectorGadget抓取链家杭州二手房数据

#加载所需的包

library("xml2")

library("rvest")

library("dplyr")

library("stringr")

#对爬取页数进行设定并创建数据框

i<-1:100

house_inf<-data.frame()

#使用for循环进行批量数据爬取(发现url的规律,写for循环语句)

for (i in 1:100){

web<- read_html(str_c("http://hz.lianjia.com/ershoufang/pg",i),encoding="UTF-8")

#用SelectorGadget定位节点信息并爬取房名

house_name<-web%>%html_nodes(".houseInfo a")%>%html_text()

#爬取二手房基本信息并消除空格

house_basic_inf<-web%>%html_nodes(".houseInfo")%>%html_text()

house_basic_inf<-str_replace_all(house_basic_inf," ","")

#SelectorGadget定位节点信息爬取地址

house_address<-web%>%html_nodes(".positionInfo a")%>%html_text()

#SelectorGadget定位节点信息爬取总价

house_totalprice<-web%>%html_nodes(".totalPrice")%>%html_text()

#SelectorGadget定位节点信息爬取单价

house_unitprice<-web%>%html_nodes(".unitPrice span")%>%html_text()

#创建数据框存储以上信息

house<-data_frame(house_name,house_basic_inf,house_address,house_totalprice,house_unitprice)

house_inf<-rbind(house_inf,house)

}

#将数据写入csv文档

R语言:rvest包+SelectorGadget抓取链家杭州二手房数据

write.csv(house_inf,file="D:/Rdata/datasets/house_inf.csv")总共抓取了链家杭州二手房100个页面3000条房价信息,抓取数据如图所示:

R语言:rvest包+SelectorGadget抓取链家杭州二手房数据

总结

用rvest包结合SelectorGadget CSS选择器能够快速实现R语言下的网络数据抓取,并适当结合stringr包中的字符串处理函数对网页数据进行清洗和整理,既省时也省力。

End.

来源:公众号“R语言中文社区”

运行人员:中国统计网小编(微信号:itongjilove)

微博ID:中国统计网

中国统计网,是国内最早的大数据学习网站,公众号:中国统计网

http://www.itongji.cn

分类