一、数据爬取
1.域名分析
链家网址为5个部分:分别为城市首字母、链家域名、项目名拼音(如租房、二手房)、关键词,(如区、板块、楼盘名等搜索关键词),筛选条件(如总价、发布时间、面积、户型页等筛选条件,由于后期可用切片器解决,故不做设置)、码栏目。
爬取时,锁定城市,调整关键词,翻页即可。
2.页面分析
每套房源,需要保留信息如下:
标签:作为主键使用;
定位:定位分为两部分,地址与板块;
长信息:长信息中,可获取信息为户型、面积、朝向、装修、建造年代;
总价:总价信息,可计算出单价信息。
搜索后页面,一页为30个房源,翻页上限为100页,即每个关键词能显示3000个房源信息。意味着如果单个关键词范围过大,将会严重压缩数据量。若一个城市房源数上10万,同时板块数有数十个,那么抽取3000套房源,数据量不足会就会导致偏差。房源总数较大时,可分割为区、乃至板块,保证数据完整。
3.页面代码分析 每套房源均在li标签下:
li标签下分别为其他信息:
title标签下为房源标签信息;
priceInfo标签下为总价信息;
flood标签下为地址与板块信息;
address标签下为关键词信息,关键词中包含户型、面积、装修等; followInfo下为关注信息,包含关注人数与发布时间。
4.编写代码及优化
调用包
解析网页
提取关键字
提取后发现,在flood地址与板块之间有“-”符号,address关键词标签下有“|”分割符号,followinfo标签下有“/”符号。
为保证一次性输出内容正确,代码修改为以下:
最后建立文件夹保存,为节约内存,建立文件夹放在for循环之前,完整代码为:
运行后得到数据:
PS:由于只是测试,爬取2个板块数据,后期根据需求,可嵌套for循环,一次性爬取多个板块数据。
二、数据清洗
导出数据主要有以下问题:
面积、关注后有单位,无法计数;
户型部分填写不统一,出现4室1厅,4室2厅,4室3厅等干扰项目;
地址多为楼盘名,全国有多个重复地址;
部分数据由于分隔符错误,缺失等问题,导致错行。
由于代码不熟悉,爬取阶段未能避免问题,采用excel中最为粗暴方式解决:
直接查找批量替换去除单位;
地址增加城市名前缀,便于识别坐标;
户型仅取前两位,便于统计
定位空格删除行,消灭脏数据。
代码优化,清洗前数据示例:
清洗后数据,PS:增加经纬度为了制作热力地图。经纬度由在线软件爬取,3000余个耗时5小时……为减少时间,降低被封ID风险,建议地址去重后爬取,然后用VLOOKUP公式匹配,
三、数据分析
采用POWERBI导入数据,整体版面如下
设置筛选器,整体剔除单价小于6000,总价小于30万房源,避免租房信息及车位信息影响数据。
切片大于等于1人关注去掉僵尸房源,建成时间07年后单位。数据共约2000组,大约比例为2:1。
总价与单价采用箱形图分析,首先理解箱形图概念。
由于最大值最小值也有意义,故区全域数据。对比发现北滨路整体高于鸿恩寺,同时两者中位数小于平均值,整体数据往高总价聚集。对应一分位数与三分位数,对了解区域价格分布也有指导性意义。
单价分布同理
地图若直接导入地址,除省市外,将会有巨大偏差。本图采用爬取经纬度的方式定位,由于经纬度为百度坐标系,与微软合作地图有一定偏差,同时坐标采用加密形式,计算有较大困难,后续需要寻找解决方案。
切片北滨路后,以北滨路:鸿恩寺总数2:1来看。发现北滨路毛坯房占比偏低;简装比例偏高;2房与1房占比更高。说明北滨路产品更多元化,刚需客户或者投资客户更多。如果切片修建时间,会发现其他更多规律。
总价单价散点图,配合户型切片观察。发现北滨路更偏于高总价单价房源。同时由于斜率表示面积,切片后发现,除一房外,同样户型北滨路户型会明显比鸿恩寺偏大。同时面积段更为宽广。
报表页(复制在浏览器中打开即可)
https://app.powerbi.com/view?r=eyJrIjoiZGIxZDE0OWMtOTA2Yi00OTkyLWI1ODItNzVjMmZhZjM0NThhIiwidCI6ImNkNWRmNDkxLTZhMTYtNDkzZS1iNTVhLTkzOGYzYWE5YWRlYiIsImMiOjEwfQ%3D%3D