原标题:R爬虫小白入门:Rvest爬链家网+分析(一)
作者:汪喵行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
之后我们就去链家网上看一看:上海二手房|上海二手房出售|最新上海二手房信息 - 上海链家网(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%html_nodes("div.info-table")%>%html_text()
发现
然后发现这个house_tag也是有点乱的:
我们会需要把“|”左右的变成一列列,比如拿第一个房子的格局来说,就可以这样:
1house_size
output就是:
其他的都是一样,就不赘述了,直接上源代码:
1rm(list=ls())
2library("xml2")
3library("rvest")
4library("dplyr")
5library("stringr")
6i
7house_inf
8for(i in1:300){
9web
10
11house_tag%html_nodes("div.info-table")%>%html_text()
12# overallprice
13house_p %html_nodes("span.total-price")%>%html_text()
14
15house_tag
16house_tag
17#size
18house_size
19#housetype
20#location
21house_loc
22#price_unit
23house_unitprice
24house_unitprice
25house_unitprice
26#m
27house_m
28house_m
29#level
30house_level
31house_level
32house_level
33house
34house_inf
35
36}
37
38#将数据写入csv文档
39write.csv(house_inf,file="house_inf.csv")
比较神奇的是,有几个变量我用“|”分割怎么都分割不开,最后无奈只好用gsub强行把我不要的去掉了。应该可以再简便。
好了最后我们得到了一个csv文件,下篇小白帖就可以开始玩这个数据啦!具体见下篇!
必胜绝招,就是把全部奉献给你所热爱的一切↓返回搜狐,查看更多
责任编辑: