我相信国内房价一直都是苦逼程序员比较关注的事情,我也非常关注全国部分地区的房价,因此我最原始的需求就是想看看全国都哪些地方房价比较高,以及几个我比较关注的城市房价都是怎么个涨势。关于这两个功能,我并没有打算做很漂亮的应用,所以实现的思路也很简单粗暴,但它可以满足我的基本的需求。如果你也有需要,我们可以一起来完善这个应用,让他更通用。
使用方法
我说了我并没有打算做很漂亮的应用,目前这个项目也只是可以满足我的基本需求,因此本项目稍微需要一点编程基础和mysql操作基础。至少要入门水平,然后就可以照着下面的步骤操作了:
- 安装依赖:
pip install -r requirements.txt
- 安装mysql并设置密码然后进入后执行下面命令:
create database house DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
use house;
CREATE TABLE residential (
record_id INT NOT NULL AUTO_INCREMENT,
province VARCHAR(100) NOT NULL,
city VARCHAR(100) NOT NULL,
year YEAR NOT NULL,
month TINYINT UNSIGNED, # DEFAULT 1
price DOUBLE, # NOT NULL, 单位: 元/m^2
url VARCHAR(100),
PRIMARY KEY (record_id)
);
- 爬取房价数据到数据库(方便后期分析):
python clawer.py
- 房价数据分析: 简单阅读修改
price_analyse.py
文件的内容后运行python price_analyse.py
即可。
程序原理
数据来源
最初有这个需求的时候我就百度搜了一下有没有现成的房价数据可以直接分析,很可惜并没有找到,但是发现了下面这个网站:
简单的分析了一下网站的结构,发现它的数据非常好爬!于是马上决定就是它了。
ps. 代码见光后应该很快就不能这么轻易爬了,如果爬的人多的话…该网站的反爬机制及将上线,到时候再…嗯,道高一尺魔高一丈/笑脸。
数据爬取
房价相关数据抓取下来怎么存呢?鉴于网站的房价数据现在可以轻易爬下来并不代表将来也可以轻易爬,为了保险起见还是决定先保存到数据库方便后期深入分析了。数据库需要什么结构呢?说实话我只是关心 在哪个省的哪个城市什么时候房价是多少,于是很自然的我的数据表包含了如下列: 省市/城市/年/月/房价 等几个关键数据。
下面首先介绍数据库的操作基本流程(windows用户需要自己适配用法了,关键步骤请看代码注释),然后介绍如何爬取该网站的房价信息,其实都很简单。
mac下mysql安装&使用&创建库和表
- 安装mysql:
brew install mysql
mysql.server