北上广深租房信息的爬取和分析
本文通过爬取链家租房网站的租房信息,对北上广深一线城市的租房信息进行分析。
以下是本篇的思维导图
数据爬取
准备工作:安装mongdb数据库,爬取到的数据将保存在mongdb数据库
1.首先找到爬取数据的路口
进入链家网的租房网站可以发现规律提取传参
https://m.lianjia.com/chuzu/sh/zufang/xujiahui
规律提取如下:
https://m.lianjia.com/chuzu/{}/zufang/{} 其中第一个花括号里面是传入城市的缩写如:上海-sh,广州-gz,北京-bj,深圳-sz,第二个括号里面传入区域例如上海的徐汇区-xuhui
后面发现如果按照区域爬取每区最多只能获得2000条数据,后来解决的办法是先爬取各区的商圈,最终以各区商圈来爬数据,那么商圈怎么爬取
可以在网页中查看代码信息发现商圈被写在data-key后面,这样用正则表达式re.findall()就可以获取商圈
“data-type="bizcircle" data-key="(.*)" class="oneline ">”
2.找到api数据接口
1 |
|
通过分析网页可以找到上面的api数据接口,其中
info[0]:110000(北京),310000(上海),440100(广州),440300(深圳)
bc_name:上面爬下来的商圈
type_code:(整租)200600000001、(合租)200600000002
idx:爬取的页数
time.time():当前时间戳
爬取到什么时候停止?当一页返回的条数小于30时,我们判断爬取完成。返回的条数在上面爬取上面链接中的数据里会有一个total,对应存的就是当页的条数
后面会用到经纬度制作租房地点的热力图,所以还需爬取经纬度信息。经纬度信息包含在上面返回的m_url网页中,还需要再爬取m_url一层,到这里数据爬取的分析工作基本完成
3.数据保存
将上面爬取到的数据保存在mongodb中,拿到mongodb连接对象,新建一个表,伪代码如下:
1 |
|
将需要存储的字段封装在item这个字典里,以upsert的方式更新在表里即可。
1 |
|
数据清理
数据清理的步骤一般包括
- 去除不需要的数据
- 去除/补全缺失数据
- 去除/修改格式和内容错误的数据
- 去除/修改逻辑错误的数据
去除不需要的数据:删除_id
1 |
|
一般DataFrame会自动生成_id作为唯一标识,里面是随机生成的一串字符串
去除/补全缺失数据:将None值用numpy.nan填充
1 |
|
去除/修改格式和内容错误的数据:
- 在房屋大小的一列中,包含-,一个范围区间,同样的租金范围那一列里也有,这里将取左边右边两值得平均值.
1
2
3
4
5
6
7
8
9# 5. rent_area观察excel里的样例数据发现 有的是个范围带有'-‘
def get_aver(data):
if isinstance(data,str) and '-' in data:
low,high = data.split('-')
return (int(low)+int(high))/2
else:
return int(data)
data['rent_area'] = data['rent_area'].apply(get_aver) - 数据类型转换去除/修改逻辑错误的数据:
1
2
3# 数据类型转换
for i in ['bathroom_num','bedroom_num','hall_num','rent_price_listing']:
data[i] = data[i].astype(int)
房间小于5平
卫生间异常多的数据
卧室异常多的数据
数据分析
1.各城市的租房分布怎么样?
看看北上广深房源都在哪个区域分布多,哪个区域少,首先来看看北京
北京的租房房源一共有19068条,可以看到北京的房源主要集中在2环到四环内,其中朝阳区的房源最多,几乎占到北京所有房源的1/3,丰台、海淀次之。
上海房源数据一共有26115条,浦东占到快7000条,比例接近1/4,在偏远地区金山崇明基本看不到房源。
广州的房源在四个城市中是最多的,一共有40022条。主要集中在天河、白云、番禺、增城以及珠海地区。其中天河、白云、番禺均超过7000条。
深圳的房源共21638条,主要还是分布在南山区、龙岗区、宝安区以及福田区,龙华区。
2.城市各区域的租金分布怎么样
由图,北京每平方米租金top10的商圈,平均在200元左右,最贵的商圈在东单,每平方米要237元,也就是说要在东单住一个20平的房子,一个月需要4770元,组一个70平的房子,需要16590元.
上海每平方米平均租金top10的商区租金要比北京低一点,平均在170左右,其中租金最高的是新天地,租60平的房子需要10610元。
相比较北京和上海而言广州的每平方米租金的top10就更平易近人一点,除了二沙岛、人民北的房租贵一点,其他均在1500以下。
深圳前10的商圈,深圳湾以193元每平方米领先,其次是香蜜湖和福田中心,大体上比上海每平方米少10元左右。
3.房间大小对每平方米租金的影响
北京
上海
广州
深圳
由上面4张图可以知道不管在哪个城市,出租面积在10-20之间的房子每平方米的租金是最贵的。所以最划算的租房方式是找几个认识的小伙伴一起租大一点的房子。
4.北上广深租房时房客更看重什么?
以下是北上广深四大城市房源最多的3种户型
可见北上广都偏爱2室1厅1卫的房子,而深圳一枝独秀,一室一卫的出租房比较多。整体来看四个城市都是小户型多。
最后根据房屋的标签进行统计,绘制了词云图。
北京租房词云图
上海租房词云图
广州租房词云图
深圳租房词云图
可见北京不集中供暖可能会活不下去,hhhhhhh;
北上广深都看中离地铁近;
广州租房流行独栋公寓;
深圳、广州对租客性别有限制。
想要以上涉及到的源代码可以联系我
邮箱:yuting9597@163.com
参考文章:
公众号:Alfred数据室
北上广深租房图鉴
觉得不错的话,给点打赏吧 ୧(๑•̀⌄•́๑)૭
wechat pay
alipay