R爬虫小白入门:Rvest爬链家网+分析(一)

2019 年 2 月 23 日 R语言中文社区

作者:汪喵行  R语言中文社区专栏作者

知乎ID:https://www.zhihu.com/people/yhannahwang


前言

最近对爬虫有了莫名的兴趣,于是开始自学用R入门爬虫。爬链家网是因为网站源代码不是框架结构,并且不需要API就可以直接爬,没有什么反爬机制。想着正好拿上海二手房价来分析一波也是挺有趣的。

自己就把这个入门帖分一二三:

一会写如何在链家网上进行爬虫;二就拿数据来玩一玩,看看有什么有趣的东西;三是通过机器学习,根据其他的attributes来预测一套房子的均价。


package主要用到的有R的爬虫利器rvest,还有xml12,dplyr,stringr等

1rm(list=ls())
2library("xml2")
3library("rvest")
4library("dplyr")
5library("stringr")

首先我们library一下

我们想要的是,按照网页源代码,把我们想要的数据爬出来,然后放在同一个数据框里,这样比较便于分析,所以先设一个空的数据框:

1house_inf<-data.frame()

之后我们就去链家网上看一看:上海二手房|上海二手房出售|最新上海二手房信息 - 上海链家网(https://sh.lianjia.com/ershoufang/

不难发现,第一页的网页是:https://sh.lianjia.com/ershoufang/

第二页是:http://sh.lianjia.com/ershoufang/d2

第三页是:http://sh.lianjia.com/ershoufang/d3

第n页是:http://sh.lianjia.com/ershoufang/dn

然后我们就知道,其实就可以写一个for循环,把这个规律写进去就好了。

然后看一下想爬的信息:比如有楼层,单位价格,总价格,平米,所在的区域,楼层等等,然后为了便于分析,最后全部放在一个数据框里,写进csv文件就好。

1house_tag<-web%>%html_nodes("div.info-table")%>%html_text()

发现<div='info-table'>里面有很多我们要的信息,所以就把它爬下来,放在house_tag这个里面。

然后发现这个house_tag也是有点乱的:

我们会需要把“|”左右的变成一列列,比如拿第一个房子的格局来说,就可以这样:

1house_size<-str_split_fixed(house_tag," +\\|",7)[,1]

output就是:

其他的都是一样,就不赘述了,直接上源代码:

1rm(list=ls())
2library("xml2")
3library("rvest")
4library("dplyr")
5library("stringr")
6i<-1
7house_inf<-data.frame()
8for (i in 1:300){
9  web<- read_html(paste("http://sh.lianjia.com/ershoufang/pg/d",i,sep=""),encoding="UTF-8")
10
11  house_tag<-web%>%html_nodes("div.info-table")%>%html_text()
12  # overallprice
13  house_p <- web%>%html_nodes("span.total-price")%>%html_text()
14
15  house_tag <- gsub("\t","",house_tag)
16  house_tag <- gsub("\n","",house_tag)
17  #size
18  house_size<-str_split_fixed(house_tag," +\\|",7)[,1]
19  #housetype <- gsub("\n","",housetype)
20  #location
21  house_loc<-str_split_fixed(house_tag," +\\|",7)[,3]
22  #price_unit
23  house_unitprice<-str_split_fixed(house_tag," +\\|",7)[,4]
24  house_unitprice <- gsub(".*单价","",house_unitprice)
25  house_unitprice <- gsub("元/平","",house_unitprice)
26  #m
27  house_m<-str_split_fixed(house_tag," +\\|",7)[,2]
28  house_m <- gsub("平.*","",house_m)
29  #level
30  house_level <- str_split_fixed(house_tag," +\\|",7)[,2]
31  house_level <- gsub(".*区/","",house_level)
32  house_level <- gsub("层.*","",house_level)
33  house<-data_frame(house_p,house_size,house_loc,house_unitprice,house_m,house_level)
34  house_inf<-rbind(house_inf,house)
35
36}
37
38#将数据写入csv文档
39write.csv(house_inf,file="house_inf.csv")

比较神奇的是,有几个变量我用“|”分割怎么都分割不开,最后无奈只好用gsub强行把我不要的去掉了。应该可以再简便。

好了最后我们得到了一个csv文件,下篇小白帖就可以开始玩这个数据啦!具体见下篇!


往期精彩:


公众号后台回复关键字即可学习

回复 爬虫            爬虫三大案例实战
回复 Python       1小时破冰入门
回复 数据挖掘     R语言入门及数据挖掘
回复 人工智能     三个月入门人工智能
回复 数据分析师  数据分析师成长之路 
回复 机器学习     机器学习的商业应用
回复 数据科学     数据科学实战
回复 常用算法     常用数据挖掘算法

必胜绝招,就是把全部奉献给你所热爱的一切

登录查看更多
2

相关内容

【2020新书】实战R语言4,323页pdf
专知会员服务
100+阅读 · 2020年7月1日
【实用书】Python爬虫Web抓取数据,第二版,306页pdf
专知会员服务
117+阅读 · 2020年5月10日
【经典书】Python数据数据分析第二版,541页pdf
专知会员服务
192+阅读 · 2020年3月12日
Python数据分析:过去、现在和未来,52页ppt
专知会员服务
99+阅读 · 2020年3月9日
TensorFlow Lite指南实战《TensorFlow Lite A primer》,附48页PPT
专知会员服务
69+阅读 · 2020年1月17日
【新书】Python编程基础,669页pdf
专知会员服务
194+阅读 · 2019年10月10日
机器学习入门的经验与建议
专知会员服务
92+阅读 · 2019年10月10日
一文看懂怎么用 Python 做数据分析
大数据技术
24+阅读 · 2019年5月5日
推荐一些适合小白练手的Python项目
数据挖掘入门与实战
6+阅读 · 2018年5月17日
Python 爬虫实践:《战狼2》豆瓣影评分析
数据库开发
5+阅读 · 2018年3月19日
自然语言处理(4)之中文文本挖掘流程详解(小白入门必读)
机器学习算法与Python学习
5+阅读 · 2017年12月22日
教你用Python爬虫股票评论,简单分析股民用户情绪
数据派THU
10+阅读 · 2017年12月12日
python数据分析师面试题选
数据挖掘入门与实战
6+阅读 · 2017年11月21日
Python3爬虫之入门和正则表达式
全球人工智能
7+阅读 · 2017年10月9日
CoCoNet: A Collaborative Convolutional Network
Arxiv
6+阅读 · 2019年1月28日
Learning Implicit Fields for Generative Shape Modeling
Arxiv
10+阅读 · 2018年12月6日
VIP会员
相关VIP内容
【2020新书】实战R语言4,323页pdf
专知会员服务
100+阅读 · 2020年7月1日
【实用书】Python爬虫Web抓取数据,第二版,306页pdf
专知会员服务
117+阅读 · 2020年5月10日
【经典书】Python数据数据分析第二版,541页pdf
专知会员服务
192+阅读 · 2020年3月12日
Python数据分析:过去、现在和未来,52页ppt
专知会员服务
99+阅读 · 2020年3月9日
TensorFlow Lite指南实战《TensorFlow Lite A primer》,附48页PPT
专知会员服务
69+阅读 · 2020年1月17日
【新书】Python编程基础,669页pdf
专知会员服务
194+阅读 · 2019年10月10日
机器学习入门的经验与建议
专知会员服务
92+阅读 · 2019年10月10日
相关资讯
一文看懂怎么用 Python 做数据分析
大数据技术
24+阅读 · 2019年5月5日
推荐一些适合小白练手的Python项目
数据挖掘入门与实战
6+阅读 · 2018年5月17日
Python 爬虫实践:《战狼2》豆瓣影评分析
数据库开发
5+阅读 · 2018年3月19日
自然语言处理(4)之中文文本挖掘流程详解(小白入门必读)
机器学习算法与Python学习
5+阅读 · 2017年12月22日
教你用Python爬虫股票评论,简单分析股民用户情绪
数据派THU
10+阅读 · 2017年12月12日
python数据分析师面试题选
数据挖掘入门与实战
6+阅读 · 2017年11月21日
Python3爬虫之入门和正则表达式
全球人工智能
7+阅读 · 2017年10月9日
Top
微信扫码咨询专知VIP会员