原标题: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文件,下篇小白帖就可以开始玩这个数据啦!具体见下篇!

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

责任编辑:

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

  1. python爬虫什么书好_python爬虫入门06 | 爬取当当网 Top 500 本五星好评书籍

    来啦,老弟 image 我们已经知道怎么使用 Requests 进行各种请求骚操作 也知道了对服务器返回的数据如何使用 正则表达式 来过滤我们想要的内容 - 那么接下来 我们就使用 requests ...

  2. python爬虫入门练习——爬酷6网视频

    '''爬虫爬酷6网视频练习version:01author:jasnDate:2020-02-18 '''import requests import refilepath = r'C:\Users\ ...

  3. web3小白入门:区块链的了解

    记录web3学习的过程,从小白开始 所有的web3相关的学习内容都会更新在github,github地址 这篇文章主要说明区块链的一些概念 为什么要了解区块链? Web3 是以区块链技术为核心,构建新 ...

  4. 爬虫学习笔记(用python爬取东方财富网实验)

    参考文章以及视频:(11条消息) 爬虫实战 | 爬取东方财富网股票数据_简说Python的博客-CSDN博客.手把手教你从东方财富网上获取股票数据_哔哩哔哩_bilibili.[Python爬虫案例] ...

  5. 爬虫学习(13):爬取坑爹网gif图

    昨天学完了BeautifulSoup,爬取了诗词网,今天学了PyQuery,于是我选择爬取坑爹网 学啥用啥嘛,嘿嘿! 插个小曲:这是我qq群970353786,同在学习python,希望更多大神小白能 ...

  6. Python学习之路 (五)爬虫(四)正则表示式爬去名言网

    爬虫的四个主要步骤 明确目标 (要知道你准备在哪个范围或者网站去搜索) 爬 (将所有的网站的内容全部爬下来) 取 (去掉对我们没用处的数据) 处理数据(按照我们想要的方式存储和使用) 什么是正则表达式 ...

  7. 爬虫百战(一):爬取当当网Top500本五星好评书籍

    爬取当当网Top500本五星好评书籍 ==实战前提:== 准备工作 撸代码 成果展示 实战前提: 掌握requests库的使用 熟悉re库,正则表达式的简单使用 可参考我的另外两篇博客进行学习 准备工 ...

  8. 小白scrapy试炼-爬取慕课网免费课程

    本文参考博客: scrapy爬虫-爬取慕课网全部课程 scrapy爬虫框架入门实例 准备工作: anaconda(为了简单安装scrapy) 安装scrapy的方法有好多种,原来在pip上花了挺多时间 ...

  9. 爬虫小白入门实例 —— 爬取全国某天所有火车的运行时刻表

    受好朋友的委托,帮忙爬取全国某天所有火车的运行时刻表. 在此之前没有用过爬虫,但是会用python,所以迅速学习了一下. 把自己的学习过程整理如下,爬虫小白可以通过下述内容快速入门. 任务描述: 爬取 ...

  10. Python爬虫天气预报(小白入门)

    这次要爬的站点是这个:http://www.weather.com.cn/forecast/ 要求是把你所在城市过去一年的历史数据爬出来. 分析网站 首先来到目标数据的网页 http://www.we ...

最新文章

  1. C++实现统计从1到n中1出现的次数(另外一种方法)
  2. 伺服电机要计算机控制,计控 - it610.com
  3. android脚步---不同activity之间参数传递
  4. .NET Core Community 第三个千星项目诞生:爬虫 DotnetSpider
  5. SpringBoot:与MyBatis合作
  6. 1105学习笔记 数组的算法上
  7. python爬去segementfault上的博客文章
  8. Kubernetes详解(二十一)——ReplicaSet控制器实战应用
  9. html5-微格式-时间的格式
  10. python分词,提高分词准确率
  11. TouchDesigner处理串口数据
  12. php 颜值测试源码,微软小冰颜值测试PHP最新代码
  13. Java微信授权小程序获取用户昵称头像等基本信息
  14. java datasource使用_DataSource 使用方法
  15. NR 5G 无线帧与子载波
  16. 查询商品分类id为10或11的商品对应的商品信息
  17. 通过userAgent判断是是否手机、微信、手机厂家
  18. System Development Life Cycle(SDLC)系统生命周期
  19. 贝格尔编排法之C++版
  20. SQL leetcode 刷题答案(二)

热门文章

  1. 数据库一对多做链接去重_数据库中一对多关系的数据,放到es中如何设计
  2. 蓝桥杯2018年第九届C/C++省赛B组第七题-螺旋折线
  3. Android SQLite实现query顺序、倒叙查询
  4. Android系统中属性值的设置和使用
  5. Django模板语言(DTL)
  6. python中使用Opencv进行人脸检测
  7. git如何查看某个人提交的日志。
  8. vue 状态管理vuex(九)
  9. split,splice,slice,substr,substring使用方法总结
  10. CheckBoxList控件绑定数据和设置选定项