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

原标题: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这个里面。

然后发现这个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文件,下篇小白帖就可以开始玩这个数据啦!具体见下篇!

必胜绝招,就是把全部奉献给你所热爱的一切↓返回搜狐,查看更多

责任编辑:

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值