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

浏览: 6647

image.png

自打春节后从家里回到学校以来就一直在捣鼓爬虫,总琢磨着个抓些数据来玩玩,在文档里保存一些自己的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

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抓取杭州二手房信息

image.png

  #加载所需的包

        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文档

        write.csv(house_inf,file="D:/Rdata/datasets/house_inf.csv")

        总共抓取了链家杭州二手房100个页面3000条房价信息,抓取数据如图所示:

image.png

总结

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

image.png

推荐 1
本文由 鲁伟 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

0 个评论

要回复文章请先登录注册