其他
我花了21.7斤人民币,在深圳买一套三居室
前两天刷抖音看到一个视频,一个广东的老大爷去售楼处买房,问售楼处的小姑娘三房的单元要多少斤一套?
没错不是多是钱,是问多少斤!
刚开始还以为大爷是来捣乱的,没想到经理最后算出来一套三室大概需要12斤,大爷掏出来秤,直接秤了人民币说来3套......
视频搞笑归搞笑,但作为一个严谨的数据人,我对“12斤百元大钞是否能买一套深圳3居室”产生了怀疑,于是我就上网用python爬了链家将近20000套二手房的信息(新开楼盘价格信息难获取且价格不稳定,这里只获取了二手房的),对深圳的房价简单做了个分析,并且借来了俺家邻居的秤,算了个大概
注:文末放链接
from bs4 import BeautifulSoup
import pandas as pd
from tqdm import tqdm
import math
import requests
import lxml
import re
import time
/opt/conda/lib/python3.6/site-packages/requests/__init__.py:80: RequestsDependencyWarning: urllib3 (1.25.7) or chardet (3.0.4) doesn't match a supported version!
RequestsDependencyWarning)
area_dic = {'罗湖区':'luohuqu',
'福田区':'futianqu',
'南山区':'nanshanqu',
'盐田区':'yantianqu',
'宝安区':'baoanqu',
'龙岗区':'longgangqu',
'龙华区':'longhuaqu',
'坪山区':'pingshanqu'}
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.146 Safari/537.36',
'Referer': 'https://sz.lianjia.com/ershoufang/'}
sess = requests.session()
sess.get('https://sz.lianjia.com/ershoufang/', headers=headers)
url = 'https://sz.lianjia.com/ershoufang/{}/pg{}/'
def re_match(re_pattern, string, errif=None):
try:
return re.findall(re_pattern, string)[0].strip()
except IndexError:
return errif
# 新建一个DataFrame存储信息
data = pd.DataFrame()
for key_, value_ in area_dic.items():
# 获取该行政区下房源记录数
start_url = 'https://sz.lianjia.com/ershoufang/{}/'.format(value_)
html = sess.get(start_url).text
house_num = re.findall('共找到<span> (.*?) </span>套.*二手房', html)[0].strip()
print('{}: 二手房源共计「{}」套'.format(key_, house_num))
time.sleep(1)
# 页面限制 每个行政区只能获取最多100页共计3000条房源信息
total_page = int(math.ceil(min(3000, int(house_num)) / 30.0))
for i in tqdm(range(total_page), desc=key_):
html = sess.get(url.format(value_, i+1)).text
soup = BeautifulSoup(html, 'lxml')
info_collect = soup.find_all(class_="info clear")
for info in info_collect:
info_dic = {}
# 行政区
info_dic['area'] = key_
# 房源的标题
info_dic['title'] = re_match('target="_blank">(.*?)</a><!--', str(info))
# 小区名
info_dic['community'] = re_match('xiaoqu.*?target="_blank">(.*?)</a>', str(info))
# 位置
info_dic['position'] = re_match('<a href.*?target="_blank">(.*?)</a>.*?class="address">', str(info))
# 税相关,如房本满5年
info_dic['tax'] = re_match('class="taxfree">(.*?)</span>', str(info))
# 总价
info_dic['total_price'] = float(re_match('class="totalPrice"><span>(.*?)</span>万', str(info)))
# 单价
info_dic['unit_price'] = float(re_match('data-price="(.*?)"', str(info)))
# 匹配房源标签信息,通过|切割
# 包括面积,朝向,装修等信息
icons = re.findall('class="houseIcon"></span>(.*?)</div>', str(info))[0].strip().split('|')
info_dic['hourseType'] = icons[0].strip()
info_dic['hourseSize'] = float(icons[1].replace('平米', ''))
info_dic['direction'] = icons[2].strip()
info_dic['fitment'] = icons[3].strip(
# 存入DataFrame
if data.empty:
data = pd.DataFrame(info_dic,index=[0])
else:
data = data.append(info_dic,ignore_index=True)
文中所用房价数据集:
https://alltodata.cowtransfer.com/s/2ca646bbff6640
后台回复「进群」,加入读者交流群~
点击红字「积分」,可了解积分规则~
五
积分兑换上新书(阅读原文直达)限时300积分,明天恢复原价,需要的同学也可以直接点击下方链接直接购买
朱小五