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

news/2024/7/2 23:08:30

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


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


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

0?wx_fmt=png



01



链家网站总体情况


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


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


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


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


02


网站结构及内容分析


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


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

0?wx_fmt=png

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

下面包含19个行政区。

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


0?wx_fmt=png


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



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



0?wx_fmt=png


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


0?wx_fmt=png


而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以及部分有价值信息。


0?wx_fmt=png


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

0?wx_fmt=png

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


0?wx_fmt=png


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


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


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


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

0?wx_fmt=png

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

0?wx_fmt=png

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



0?wx_fmt=png

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


0?wx_fmt=png


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


0?wx_fmt=png

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



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

0?wx_fmt=png

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



0?wx_fmt=png

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


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


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



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

0?wx_fmt=png


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

0?wx_fmt=png


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



0?wx_fmt=png

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


0?wx_fmt=png

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


0?wx_fmt=png

房屋的基本属性和和交易属性在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,对房源信息分析获取有价值信息存数据库。


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



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



0?wx_fmt=jpeg

长按进行关注







http://lihuaxi.xjx100.cn/news/237957.html

相关文章

react中使用构建缓存_通过构建海滩度假胜地网站,了解如何使用React,Contentful和Netlify...

react中使用构建缓存In this full course from John Smilga you will learn React by building a beach resort website project. The project uses React router for routing, React context API for state management, Contentful headless CMS for data management, and Net…

WWDC2018总结

本人的第一篇文章(现在写文章是为了提升自己的语句表达能力) 欢迎大家观看本文章,是略微总结一下WWDC2018发布的iOS12的新东西 iOS12略微总结(持续更新。。。) iOS12 变化 iOS 12新功能汇总(后面希望可以上…

cd: mkdir: rmdir: rm

1、1 绝对路径和相对路径绝对路径:是指在目录下的绝对位置,直接到的目标位置例如:只要看到这个路径:D:\图片\徐慧茹.jpg"文件是在D盘的“图片”目录中。类似这样完整的描述文件的路径就是绝对路径。相对路径&…

Wireshark分析实战:某达速递登录帐号密码提取

“使用某达速递的官网登陆及APP登录,来学习Wireshark的使用。”在如今这个HTTPS深入人心的情况下,作为一个也不算很小的快递,某达速递,不但全站HTTP,而且登录帐号密码明文未加密传输,也算是技术落后到了一定…

在Mac上控制Alt Delete-如何在Macbook上打开任务管理器

It happens to the best of us: were working away on some important project, and our trusty computer freezes. Or rather, a program were in just stops responding. So what do you do?这对我们最好的人来说是偶然的:我们正在做一些重要的项目,而…

区块链(Blockchain)应用案例:供应链

想知道更多关于区块链技术知识,请百度【链客区块链技术问答社区】 链客,有问必答!供应链是由参与特定产品或服务生产和分发的企业和人员组成的网络——包括最初的供应商到最终的用户和客户。最基本的供应链系统通常包含食品或原材料的供应商、…

snmpd 子代理模式编译测试

1、参考链接 1)Net-snmp添加子代理示例https://blog.csdn.net/eyf0917/article/details/395466512、操作步骤1)网络拷贝下面的文件http://www.net-snmp.org/tutorial/tutorial-5/toolkit/mib_module/NET-SNMP-TUTORIAL-MIB.txthttp://www.net-snmp.org/t…

你学习技术必须知道的开发工具

想知道更多关于区块链技术知识,请百度【链客区块链技术问答社区】 链客,有问必答!区块链的最强大链接是开放开发工具 为了在云2.0行业中充分利用区块链的优势,组织必须构建适当的技术框架。这个框架必须大量使用API和连接性解决方…