爬虫深圳租房网站&&租房分析(python)

1,709 阅读4分钟

目标:深圳租房信息


数据获取

网页结构分析:sz.58.com/chuzu/ping0/

需要爬取的信息 ---->

分析该网站的html结构,获取这些字段

使用requests,BeautifulSoup,,,各种包爬取数据

得到的csv如下:


数据清理

合并由于反爬虫而多次爬的csv数据

去重(drop)&&数据列的拆分(正则)&&整理列的顺序

处理完以后的表格结构,把位置,房间大小,出租的形式以每一列的形式展现:

数据分析

初步观察数据的特征值的缺失情况 ,表示没有缺失值,初步验证发布58租房信息时这些消息都是必填选项。(sz_rent.describe())

统计特征值是数值的的统计值(sz_rent.describe()),包括平均数,中位数,标准差,最小值,最大值,四分位数,75%分位数。这些结果简单直接,初步了解一个特征值非常有用,比如我们观察到size的最大值140平方米,最小是9平方米。


接下来用可视化来清晰的展示各个数据的关系。

新建一个房子的每平方米的出租价格perPrice插入表格,如下

可视化分析

region特征分析

使用了pandas的网络透视功能groupby分组排序。区域特征可视化直接采用seaborn完成,颜色使用调色板palette参数,颜色渐变,越浅说明越少,反之越多。

如上可以得出观察到:

  • 每平米租金:福田>南山>罗湖>宝安>龙华>龙岗>盐田>光明>坪山基本符合我们广大租房群众的租房常识。
  • 出租房的数量:龙华>宝安>罗湖~福田~南山 >坪山。关外房子数量多啊,关外啥都好,房价便宜,吃的便宜,但是就是交通不便。总总优势,所以还是选择关外的租房的人会多一些把。
  • 通过箱型图看到,各大区域房屋总价每平米中位数都都在200以下,且房屋总价离散值较高,最高的点是在大冲,第二高点在福田,科技园和金融的大佬居住的地方,离公司近,无所谓房租。

size特征值分析

Size 与 Price 的关系:

通过 regplot 绘制了 Size 和 Price 之间的散点图,发现 Size 特征基本与Price呈现线性关系,符合基本常识,面积越大,价格越高。但是有两组明显的异常点:1. 面积120左右的租金价格在12000。2. 一个点面积140平米左右,价格偏低,需要查看是什么情况。

猜测应该是位置的原因把。

1.

2.

南山地铁口的房子,靠近腾讯大厦,三条地铁线,科技园的中心,所以租金。

公明,还没开发的光明新区,没有通地铁,所以租金那么低。

选择租房地址,不仅仅要考虑租金,交通也是很重要的。

====符合大家租房常识。

layout 分析

单间出租比较多,一室一厅,一室0厅都是单间出租。反向推理,大部分人也还是比较愿意一个人住。

出租房间类型与价格分析

整租的数量多一些,然后单间的每平米价格会更高,观察数据得知单间的大都时候是整套里面所谓的一间出租,自然面积会小很多,导致单间每平米的租金会高一些。然后添加月租金和出租类型的关系得证。

遇到的坑:

1.问:安装pip3及各种package

答:折腾了很久,然后发现是网络的问题。

--添加代理 pip3 install -i pypi.doubanio.com/simple/ IPytho

2.问:58的反爬虫-登陆机制

答:没有gg到对应方法,采取了多次分批爬虫;

3.问:58的反爬虫-数字采用加密的方法

答:找到对应的密文转化成二进制保存到woff字体中并转为xml文件

观察字体文件,一一变为正常字体

4.问:数据可视化中文字体显示为方块

答:下载SimHei.ttf拷贝并安装到本地,修改配置项,重启python'

参考:www.zhihu.com/question/25…

总结

这是一篇很鸡肋的分析文章,都是在我们可以推理得到的基础上,当然这篇主要是为了学习用python进行爬虫,数据清理,然后学会用各种工具对数据进行分析。

学习的过程中当然也存在一些问题:

  • 爬虫的数据不够多,--好好学习一些反爬虫的技巧
  • 分析的比较浅显 慢慢积累多挖掘
  • 需要做更多的特征工程工作,数据清洗,特征选择和筛选
  • 使用统计模型建立回归模型进行价格预测
最后:github地址:github.com/heavy-snowy…