链家网爬虫框架

链家网爬虫框架

该项目的GitHub地址为:jumper2014/lianjia-spider

下面的主要内容来自项目的README。

该框架的特点:

  • 爬取链家网的各类房价数据(小区数据,挂牌二手房, 出租房,新房)。
  • 支持北京上海广州深圳等国内21个主要城市房价数据的采集。
  • 支持Python2和Python3。
  • 基于页面的数据爬取,稳定可靠。
  • 丰富的代码注释,帮助理解代码并且方便扩展功能。
  • 数据含义:城市-city, 区县-district, 板块-area, 小区-xiaoqu, 二手房-ershou, 租房-zufang, 新房-loupan。
  • 每个版块存储为一个csv文件,该文件可以作为原始数据进行进一步的处理和分析。
  • 支持图表展示。

使用准备

  1. 首先把该项目下载下来。解压之后修改文件名为lianjia

  2. 把工作目录切换至该文件夹,安装依赖:

    1
    2
    cd '/Users/mr.cheng/Desktop/lianjia/'
    pip install -r requirements.txt
  3. 把该文件夹的路径添加到系统文件夹中:

    1
    2
    3
    4
    python
    >>> import sys
    >>> sys.path.append('~/Desktop/lianjia/')
    >>> exit();

小区房价数据爬取

  • 内容格式:采集日期,所属区县,板块名,小区名,挂牌均价,挂牌数

    1
    20180221,浦东,川沙,恒纬家苑,32176元/m2,3套在售二手房
  • 数据可以存入MySQL/MongoDB数据库,用于进一步数据分析,比如排序,计算区县和版块均价。

  • MySQL数据库结构可以通过导入lianjia_xiaoqu.sql建立。
  • MySQL数据格式: 城市 日期 所属区县 版块名 小区名 挂牌均价 挂牌数

    1
    上海 20180331 徐汇 衡山路 永嘉路621333333 0
  • MongoDB数据内容:

    1
    { "_id" : ObjectId("5ac0309332e3885598b3b751"), "city" : "上海", "district" : "黄浦", "area" : "五里桥", "date" : "20180331", "price" : 81805, "sale" : 11, "xiaoqu" : "桥一小区" }
  • Excel数据内容:

    1
    上海 20180331 徐汇 衡山路 永嘉路621333333 0
  • 运行, python3 xiaoqu.py 根据提示输入城市代码,回车确认,开始采集数据到csv文件。

1
2
3
4
5
6
7
8
9
$ python3 xiaoqu.py
Which city do you want to crawl?
bj: 北京, cd: 成都, cq: 重庆, cs: 长沙
dg: 东莞, dl: 大连, fs: 佛山, gz: 广州
hz: 杭州, hf: 合肥, jn: 济南, nj: 南京
qd: 青岛, sh: 上海, sz: 深圳, su: 苏州
sy: 沈阳, tj: 天津, wh: 武汉, xm: 厦门
yt: 烟台,
sh

然后就会开始爬取上海的小区房价数据了。287秒就爬完了,一共18889条房价数据。

修改 xiaoqu_to_db.py 中的database变量,设置数据最终存入mysql/mongodb/Excel/json

例如存入MySQL数据库,作者已经为我们写好了创建数据库和数据表的SQL语句:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
create database if not exists lianjia;
DROP TABLE IF EXISTS `xiaoqu`;

CREATE TABLE `xiaoqu` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`city` varchar(10) DEFAULT NULL,
`date` varchar(8) DEFAULT NULL,
`district` varchar(50) DEFAULT NULL,
`area` varchar(50) DEFAULT NULL,
`xiaoqu` varchar(100) DEFAULT NULL,
`price` int(11) DEFAULT NULL,
`sale` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

然后运行python3 xiaoqu_to_db.py

然后再测试倒入MongoDB,首先启动MongoDB:

1
sudo mongod

然后运行python3 xiaoqu_to_db.py(先修改database变量):

1
python3 xiaoqu_to_db.py

最后再用图表展示房价:

1
python3 xiaoqu_to_chart.py


挂牌二手房数据爬取

  • 获取链家网挂牌二手房价数据,数据格式如下:

    1
    20180405,浦东,万祥镇,祥安菊苑 32258万,258万,祥安菊苑 | 32厅 | 126.58平米 | 南 | 毛坯
  • 运行,python3 ershou.py 根据提示输入城市代码,回车确认,开始采集数据到csv文件。如果提示无BeautifulSoup包而且又无法成功安装,就ershou.py里面的import BeautifulSoup as BeautifulSoup改成import bs4 as BeautifulSoup就好了。

1
python3 ershou.py

经过770秒之后,程序爬取到了69221条数据。

出租房数据爬取

  • 获取链家网挂牌出租房数据,数据格式如下:
    1
    20180407,浦东,御桥,仁和都市花园  ,32厅,100平米,8000

运行,python3 zufang.py 根据提示输入城市代码,回车确认,开始采集数据到csv文件。

1
python3 zufang.py

经过112秒,抓取到了257条数据。

新房数据爬取

  • 获取链家网新房数据,数据格式如下:
    1
    20180407,上海星河湾,76000,1672

运行,python3 loupan.py根据提示输入城市代码,回车确认,开始采集数据到csv文件。

1
python3 loupan.py

结果73秒钟爬了635个楼盘。

感觉作者做了非常伟大的事!

# Python

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×