链家网爬虫框架

链家网爬虫框架

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

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

该框架的特点

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

使用准备

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

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

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

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

小区房价数据爬取

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

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

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

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

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

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

Shell
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:

Shell
1
sudo mongod

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

Shell
1
python3 xiaoqu_to_db.py

最后再用图表展示房价:

R
1
python3 xiaoqu_to_chart.py


挂牌二手房数据爬取

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

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

Shell
1
python3 ershou.py

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

出租房数据爬取

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

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

Shell
1
python3 zufang.py

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

新房数据爬取

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

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

Shell
1
python3 loupan.py

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

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

# Python

Comments

Your browser is out-of-date!

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

×