本文对链家官网网页进行内容分析,可以作为一般HTTP类应用协议进行协议分析的参考,同时,对链家官网的结构了解后,可以对二手房相关信息进行爬取,并且获取被隐藏的近期成交信息。


另外,近期将对包含登录帐号密码的某网站HTTP协议数据进行分析,敬请期待。

作为全国知名的房产中介,链家网站上的二手房交易数据比较全面,可以作为对房产热度进行分析的一个参考资料。

01

链家网站总体情况

链家全站HTTPS,无法并行抓包对用户数据进行协议还原,但可采用其它手段,如爬虫等技术对网站数据进行监控。

整个网站的首页为https://www.lianjia.com,内含一系列子站链接,无其它有价值信息,各个城市子站点内数据是我们要分析的主要目标。

我们关注二手房的成交数据,以及挂牌在售数据,因此选取一个子站点cd.lianjia.com对相关数据进行分析,其它子站分析方式类似。

整个子站点挂牌数及成交数很大,遍历不便。但行政区数量有限,只有几个,每个行政区下分成数百数千小区,每个小区有各自的成交数据及在售数据,数据比较规范,可以按统一规律进行数据组织。

02

网站结构及内容分析

按照从总到分的顺序逐步遍历网站数据。

1、从小区查找的首页提取各行政区URL。

基础URL为https://cd.lianjia.com/xiaoqu/

下面包含19个行政区。

在这个页面提取到各个行政区域的URL。

对页面内容分析的关键是找到确定内容位置的唯一标识符,很显然,data-role="ershoufang"属性描述的div是唯一的,里面可以获取每个行政区的url以及行政区名。

2、访问每个行政区URL,获取小区总页数

小区数量很多,有很多页,需要一页一页提取,因此需要总结出每一页的URL规律,获取总页数和小区列表每页的url拼接方法。

而class="page-box house-lst-page-box"描述的div内,包含了page-data="{"totalPage":38,"curPage":1}",总页面数38,以及小区列表每页URL的拼接方法page-url="/xiaoqu/jinjiang/pg{page}/",即页面为从cd.lianjia.com/xiaoqu/jinjiang/pg1/到cd.lianjia.com/xiaoqu/jinjiang/pg38/。

其它区域内小区列表页面类似,只需改变URL内的jinjiang为对应区,最后的数字改为对应的页面即可。

3、遍历行政区URL下的分页,提取各个小区的URL以及部分有价值信息。

小区列表内可以提取到小区的属性,如位置,区域,修建时间以及均价在售套数,另外,还有关键的小区url。

从html中可以看到,小区信息在class="listContent"描述的ul内,具备唯一性,而每个小区的描述占一个li,循环遍历即可提取到各项小区信息。

在每个li内,每个div的属性都具备唯一性,按div一级一级查找即可获取,在此不做详述。

各个小区均有一个唯一编号,即URL内的第三段内容,如cd.lianjia.com/xiaoqu/3011056075583/表示的小区编号为3011056075583。

4、根据每个小区的URL,构造成交记录列表URL和在售二手房列表URL。

对一个小区URL如cd.lianjia.com/xiaoqu/3011056075583/,其成交记录列表URL为cd.lianjia.com/chengjiao/c3011056075583/,在售二手房列表URL为cd.lianjia.com/ershoufang/c3011056075583/,在这两个页面,可获取到成交记录总页面数和在售列表总页面数以及构造分页的规律,即各个分页的URL分别为cd.lianjia.com/chengjiao/pg{1-x}c3011056075583/和cd.lianjia.com/ershoufang/pg{1-x}c3011056075583/,其中的{1-x}用页面值代替即可。

5、逐页访问成交记录列表URL页面,可获取全部成交房源URL。

成交列表页面包含了每一套成交房源信息,包括小区,房型,面积,朝向,装修,电梯,楼层,年代,税费,挂牌价,成交周期,成交日期,成交总价,成交单价等信息,但最近成交的价格数据被隐藏,需要到房源页面获取。

从html中可以看到,成交房源信息在class="listContent"描述的ul内,具备唯一性,而每个房源的描述占一个li,循环遍历即可提取到各项房源信息。

在每个li内,每个div的属性都具备唯一性,按div一级一级查找即可获取,在此同样不做详述。

各个房源的URL在class="title"的div内的href属性值内。

6、访问成交房源URL,获取单个房源的详细信息。

进入单个成交房源页面,可以看到完整信息,包括小区,房型,面积,朝向,装修,电梯,楼层,年代,税费,挂牌价,成交周期,成交日期,成交总价,成交单价等更丰富的信息,包括基本属性和交易属性。

基本信息内的基本属性和交易属性与在售房源内基本相同,所以二者在提取时相互借鉴。

在房源标题div内可以提取到房源小区信息,其余信息可在其它位置提取到更详细数据,在此处忽略。

在class="wrapper"的section内,为总价,单价,挂牌价等信息。按各自的class提取即可。

房屋的基本属性和和交易属性在class="newwrap baseinform"的div内的class="introContent"的div内,分成两个div,分别为class="base"及class="transaction"。然后依次提取即可。

7、访问在售二手房列表URL,获取全部在售房源URL。

在售列表页面包含了每一套房源信息,包括小区,房型,面积,朝向,装修,电梯,楼层,年代,税费,挂牌总价,挂牌单价等信息,但更详细的信息,需要到房源页面获取。

从html中可以看到,在售房源信息在class="sellListContent"描述的ul内,具备唯一性,而每个房源的描述占一个li,循环遍历即可提取到各项房源信息。

在每个li内,每个div的属性都具备唯一性,按div一级一级查找即可获取,在此同样不做详述。

各个房源的URL在class="title"的div内的href属性值内。

8、访问在售房源URL,获取单个房源的详细信息。

进入单个在售房源页面,可以看到完整信息,包括小区,房型,建筑面积,套内面积,朝向,装修,电梯,楼层,年代,税费,挂牌总价,挂牌单价等更丰富的信息,包括基本属性和交易属性。

基本信息内的基本属性和交易属性与成交房源内基本相同,所以二者在提取时相互借鉴。

在房源标题div内可以提取到房源小区信息,其余信息可在其它位置提取到更详细数据,在此处忽略。

在class="overview"的div内,为总价,单价等信息。按各自的class提取即可。

房屋的基本属性和和交易属性在class="newwrap baseinform"的div内的class="introContent"的div内,分成两个div,分别为class="base"及class="transaction"。然后依次提取即可。

对所有信息进行提取后,整合即可存入数据库中供使用。

03

数据抓取

使用Python及BeautifulSoup库,可以很方便地爬取数据。

Python及BeautifulSoup库安装可以参考之前的文章:

Windows下Python 3.6 安装BeautifulSoup库

通过前一节的分析,可知整个抓取过程如下:

首先,从入口页面提取城市的各区URL。

第二步,获取各小区的URL,并获取小区信息存数据库。

第三步,根据小区URL生成在售页面URL及成交页面URL。

第四步,提取小区在售房源URL,对房源信息分析获取有价值信息存数据库。

第五步,提取小区成交房源URL,对房源信息分析获取有价值信息存数据库。

为加快速度,应采用多线程方式。

如有疑问可联系我进行探讨,有一个简单的房源爬虫可以提供。

长按进行关注。

干货!链家二手房数据抓取及内容解析要点相关推荐

  1. Python爬虫入门教程石家庄链家租房数据抓取

    1. 写在前面 这篇博客爬取了链家网的租房信息,爬取到的数据在后面的博客中可以作为一些数据分析的素材. 我们需要爬取的网址为:https://sjz.lianjia.com/zufang/ 2. 分析 ...

  2. Python爬虫入门【16】:链家租房数据抓取

    1. 写在前面 作为一个活跃在京津冀地区的开发者,要闲着没事就看看石家庄这个国际化大都市的一些数据,这篇博客爬取了链家网的租房信息,爬取到的数据在后面的博客中可以作为一些数据分析的素材. 我们需要爬取 ...

  3. 爬取北京链家二手房数据

    利用python爬取了北京链家主页的二手房数据,爬取时间为2020年1月8日.由于链家只显示了100页.每页30条,因此只能爬取3000条数据. 后续将爬取各区的小区名,对每个小区的在售二手房数据进行 ...

  4. PyQt5+Python+Excel链家二手房信息爬取、可视化以及数据存取

    成果图: 第一步运行代码searsh.py,效果如下 第二步选择你所需要爬取数据的城市,如湖北-武汉 然后搜索,结果如下 如果你想爬取更多信息,只需要点击下一页即可 第三步,保存数据.可以将所显示的所 ...

  5. 用Python实现全国二手房数据抓取+地图展示

    最近各种政策的出台,导致二手房的价格波动巨大,本文二哥来带领大家通过链家二手房为例,简单分析一下全国多个地区的二手房价格. [建议先点赞.再收藏] 一.思路❤️ 想要获取链家全国二手房的信息,首先我们 ...

  6. 3-对链家二手房数据进行预处理,以及利用CNN进行多分类操作

    使用:26-爬取链家二手房成交的房产信息[简单] (https://my.oschina.net/pansy0425/blog/3031621),对爬取到的数据进行简单的清洗,去噪,进行数据预处理,以 ...

  7. 爬虫实战:链家租房数据爬取,实习僧网站数据爬取

    前面已经进行了爬虫基础部分的学习,于是自己也尝试爬了一些网站数据,用的策略都是比较简单,可能有些因素没有考虑到,但是也爬取到了一定的数据,下面介绍两个爬过的案例. 爬虫实战 链家网站爬取 实习僧网站爬 ...

  8. 【Python爬虫项目】链家房屋信息抓取(超详细适合新手练习附源码)

    爬取链家房屋信息 爬取信息具体如下: 1.标题 2.位置 3.房屋介绍 4.房屋总价 5.房屋单价 一.检查网页源码 搜索标题中的关键字发现目标信息可以在源码中找到,所以我们请求该url网址就可以拿到 ...

  9. scrapy 爬取链家二手房数据

    学习使用 只爬取展示的展示的3000条数据 spider: # -*- coding: utf-8 -*- from urllib import parse import scrapy from sc ...

最新文章

  1. 表单实例(判断两次密码是否一致)
  2. 2014.8.30.ref,out,params,enum,递归
  3. DX:ASPxGridView使用选择事件的前置条件
  4. 【Python-ML】电影评论数据集文本挖掘 -在线学习
  5. Memcache参数
  6. boost::graph模块实现包含平均测地线示例
  7. 嵌入式ARM微处理器选型指南
  8. centos mysql 5.6 源码_Centos7环境中mysql-5.6.39 源码安装
  9. MySQL 数据库“十宗罪”(十大经典错误案例)
  10. 年薪10万的前端一定会用的19 个 JavaScript 简写方法!
  11. 频频霸榜的 Python,竟遭开发者嫌弃!
  12. 吴韧谈异构智能芯片:比谷歌能耗低,比华为寒武纪计算力高
  13. sparkwordcount
  14. Android 获取手机总内存和可用内存等信息
  15. 轻量java框架_smart-framework
  16. SpringMVC---- SpringMVC返回JSON数据
  17. 微信二级不死域名和微信白名单的区别?
  18. 25-javaweb接入支付宝支付接口
  19. android模拟器 diy,史莱姆机DIY模拟器
  20. 【游戏】LOL只能攻击英雄,点不了小兵解决办法

热门文章

  1. Maven学习总结(6)——Maven与Eclipse整合
  2. hdu-3071 Gcd Lcm game---质因数分解+状态压缩+线段树
  3. Python之装饰器
  4. 手动建库11.2.0.4
  5. jsp 出现cannot be resolved to a type问题解决办法
  6. 关于Centos下Clamv反病毒软件包更新问题
  7. Java初学者如何自学和自己定位解决问题
  8. 地址本在不同手机间的迁移
  9. 如何配置IntelliJ IDEA发布JavaEE项目?
  10. 【Mac】解决「无法将 chromedriver 移动到 /usr/bin 目录下」问题