欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

我爬了链家青岛市北3000套二手房得出一个结论

程序员文章站 2022-07-05 14:32:44
前言 青岛的房价这两年翻了一番,举个栗子,如果你在2016年在市区买了100万的房子,2018年价值200万,净增100万;如果你2016年没有买这100万的房子,2018年买房将多付100万,机会成本100万。而这100万可能是青岛白领不吃不喝十年的收入。 自2018年第二季度起,限价限购限售与金 ......

我爬了链家青岛市北3000套二手房得出一个结论

前言

青岛的房价这两年翻了一番,举个栗子,如果你在2016年在市区买了100万的房子,2018年价值200万,净增100万;如果你2016年没有买这100万的房子,2018年买房将多付100万,机会成本100万。而这100万可能是青岛白领不吃不喝十年的收入。

自2018年第二季度起,限价限购限售与金融市场去杠杆两大行政令双管齐下,包括青岛在内的一二线城市房价明显遇冷,成交寥寥,投资客杳无踪影,刚需驻足观望,着急出售的不得不主动降价,价格普遍下跌,三四线城市也受到不同程度的影响。根据博主的卖房经历,初始挂牌价同小区同期房最低,依然许久无人问津,在中介的提议下骤降x%才出手。但是,从长期来看,除非*放弃干预,实行完全的市场经济模式,否则一二线城市的房价跌幅不会太大,尤其青岛,各地铁线路的开通将再次拉高沿线房产价格。对于刚需群体而言,买房的主要目的不是投资,而是居住。购房时间越晚,成本越高。

爬取数据

博主最近有买房的计划,房价稳中下跌,不失为一个买房好机会。于是,我这个之前不懂房的人,硬着头皮用 python 爬了些数据分析了一丢丢。

创建基本的数据库:

create table `house` (
   `id` int(11) unsigned not null auto_increment comment '主键',
   `url` int(11) not null comment '二手房地址',
   `housing_estate` varchar(20) not null comment '小区',
   `position` varchar(20) not null comment '位置',
   `square_metre` decimal(10,2) not null comment '大小 平米',
   `unit_price` int(11) not null comment '单价元 基本都是整数',
   `total_price` int(11) not null comment '单价万元 基本都是整数',
   `follow` int(11) not null comment '关注量',
   `take_look` int(11) not null comment '带看量',
   `pub_date` timestamp not null default current_timestamp on update current_timestamp comment '发布日期',
   primary key (`url`),
   unique key `id` (`id`)
 ) engine=innodb auto_increment=1 default charset=utf8

爬取代码:

#coding=utf-8
#!/usr/bin/python
__author__ = "小柒"
__blog__ = "https://blog.52itstyle.com/"
# 导入requests库
import requests
# 导入文件操作库
import os
import re
import bs4
from bs4 import beautifulsoup
import sys
from util.mysql_dbutils import mysql


# 写入数据库
def write_db(param):
    try:
        sql = "insert into house (url,housing_estate,position,square_metre,unit_price,total_price,follow,take_look,pub_date) "
        sql = sql + "values(%(url)s,%(housing_estate)s, %(position)s,%(square_metre)s,"
        sql = sql + "%(unit_price)s,%(total_price)s,%(follow)s,%(take_look)s,%(pub_date)s)"
        mysql.insert(sql, param)
    except exception as e:
        print(e)


# 主方法
def main():
    # 给请求指定一个请求头来模拟chrome浏览器
    headers = {'user-agent': 'mozilla/5.0 (windows nt 10.0; win64; x64) applewebkit/537.36 (khtml, like gecko) chrome/54.0.2840.99 safari/537.36'}
    page_max = 100
    for i in range(1, int(page_max) + 1):
        if i == 1:
            house = 'https://qd.lianjia.com/ershoufang/shibei/'
        else:
            house = 'https://qd.lianjia.com/ershoufang/shibei/pg'+str(i)
        res = requests.get(house, headers=headers)
        soup = beautifulsoup(res.text, 'html.parser')
        li_max = soup.find('ul', class_='selllistcontent').find_all('li')
        for li in li_max:
            try:
                house_param = {}
                #  荣馨苑  | 3室2厅 | 115.91平米 | 南 北 | 毛坯 | 无电梯
                content = li.find('div', class_='houseinfo').text
                content = content.split("|")
                house_param['housing_estate'] = content[0]
                house_param['square_metre'] = re.findall(r'-?\d+\.?\d*e?-?\d*?', content[2])[0]
                # --------------------------------------------------------#
                #  位置 水清沟
                position = li.find('div', class_='positioninfo').find('a').text
                house_param['position'] = position
                # --------------------------------------------------------#
                totalprice = li.find('div', class_='totalprice').text
                house_param['total_price'] = re.sub("\d", "", totalprice)
                unitprice = li.find('div', class_='unitprice').text
                house_param['unit_price'] = re.sub("\d", "", unitprice)
                # --------------------------------------------------------#
                # 57人关注 / 共13次带看 / 6个月以前发布
                follow = li.find('div', class_='followinfo').text
                follow = follow.split("/")
                house_param['follow'] = re.sub("\d", "", follow[0])
                house_param['take_look'] = re.sub("\d", "", follow[1])
                # --------------------------------------------------------#
                # 二手房地址
                title_src = li.find('div', class_='title').find('a').attrs['href']
                house_param['url'] = re.sub("\d", "", title_src)
                res = requests.get(title_src, headers=headers)
                soup = beautifulsoup(res.text, 'html.parser')
                # --------------------------------------------------------#
                # 挂牌时间(重要数据)
                pub_date = soup.find('div', class_='transaction').find_all('li')[0].find_all('span')[1].text
                house_param['pub_date'] = pub_date
                write_db(house_param)
            except exception as e:
                print(e)
        mysql.end("commit")
    mysql.dispose()


if __name__ == '__main__':
    main()

通过链家网页搜索,青岛市北共找到 5105 套二手房,但是看下分页,有100页,每页30条数据,博主用 python也只爬下2994条数据。个人侦察能力有限,至今仍未找到被藏起来的两千多套房子。若有知晓内幕者,望不吝赐教,柒某愿闻其详。

分析数据

数据库设计方面,博主目前只关注总价、均价、关注、带看量以及发布时间。

总体概况

总数 均价 均关注 均带看
2994 27721 17 1

我们先来看一下链家提供的青岛市北的二手房价格(成交价)走势:

我爬了链家青岛市北3000套二手房得出一个结论

爬取得到的平均单价与链家统计的挂牌平均单价相差无几,成交单价比挂牌平均单价低3k左右。目前二手房市场交易冷冷清清,部分二手房房主无意出售或者不急于出售,挂牌一两年仍未成交,这里后面会有数据说明。

只有少部分房主出于房产置换或*等需求,着急出售,因而愿意大幅降价。

我爬了链家青岛市北3000套二手房得出一个结论

受首付难凑,房贷难申,房价下跌,尤其是房产市场前景不明朗等多重因素影响,本就为数不多的准买家持续观望,尽管各中介频繁推荐房源,但是准买家并不为所动。

位置分布

我爬了链家青岛市北3000套二手房得出一个结论

我爬了链家青岛市北3000套二手房得出一个结论

从以上两张图可以很直观地看出二手房集中在几个区域——海云庵、台东、新都心。为何这些区域存在如此多的待售二手房呢?

  • 海云庵:以前属于四方区,后现划分至市北,位置略偏,多层房老旧,还有部分拆迁还建房,高至三十几层,物业管理混乱。原房主出售房产谋求换房改善居住环境。

  • 台东:老市北,典型的开放多层老旧小区,商住混合,人员杂乱,挂牌出售的房产中尤以待拆房居多。

  • 新都心:属于市北新商业区,多为2010年以后的高层电梯房,房子基数大,且此区域配套设施完善,在这个区域投资的炒房客多,挂牌出售以*。

带看量

我爬了链家青岛市北3000套二手房得出一个结论

带看量为零的房源高达六成,多为同小区房源中单价偏高者,显然,鲜有人问津是此时挂牌出售的大部分房源的现状,准买家不仅不急于购买,看房子也不着急了。或许不仅仅是不着急,而是基于目前家庭经济状况考虑,购房目标转向被限价的新楼盘和价格较低的红岛、黄岛等区域了。

挂牌大于一年未出售的房子:

总数 单均价 均关注 均带看
124 28169 47 0.48

挂牌大于半年未出售的房子:

总数 单均价 均关注 均带看
908 27795 31 0.92

挂牌大于三个月未出售的房子:

总数 单均价 均关注 均带看
2345 27712 20 1.07

在带看量为0或1的房源中,不排除部分炒房客无意出售或者不急于出售,有意高价挂牌,潜移默化地拉高整个小区的房价。

贷款

此次房地产市场遇冷,与贷款利率提高不无关系,房价与房贷利率犹如坐在跷跷板两端,当房价出现下滑迹象时,房贷利率优惠就难觅踪影,而当首套房贷利率有所松动时,房价将进入上升通道。对刚需而言,房价略降并不意味着购房成本降低。房贷利率上浮了百分之二十左右,但房价仅仅是略降而已,如果购房者贷款比例高,房价下降的部分不多于多付的利息,购房总成本并未降低。总而言之,利率高,房价低,对于全款买房的买家来说,成本才是真的低了。

商业贷款贷款额度100万,等额本息还款差距表:

优惠 利率 月供
基准 4.9 5307
九折 4.41 5014
上浮20% 5.88 5919

如果你打算公积金贷款,不要做白日梦了,漫长的申请周期和可怜的额度足以让买卖双方都抓狂。

注:2017年青岛就业人员平均工资出炉 月均5253元。

房产税

至于房产税,还在酝酿提案中,神马时候冲破重重关卡仍未可知。

那么哪些人惧怕房产税?

人群 伤害指数
在中心城市囤积大量住宅的人 ★★★
盲目购买旅游物业、养老地产的人 ★★★★
盲目购买三四线城市郊区、新区住宅的人 ★★★★
加杠杆、超承受能力买多套房的白领 ★★★★
在三四线城市囤积了大量住宅的人 ★★★★★★
手中有多套房、负债率非常高的炒房者 ★★★★★★

主要取决于房产税的具体条款,包括征税比例、起征房产套数、起征面积、异地房产统计、家庭成员统计等诸多因素。

趋势态度

其实扯了这么多,总的来说,房价大概不会继续翻着番地涨,同时,指望购房成本下降也是不现实的。如果你是炒房客,换个市场炒吧;如果你是刚需,看好房子就要尽早下手,不要期待任何人慷慨解囊或赠予。规则认知和运用能力是个体生存的基本能力。

当然,肯定有一些人,斥责现在的年轻人以买房为目标,别无他求。有的是有人帮忙负重,生而无忧,从不为其所困;有的是无欲无求,赡养、抚育与他毫无干系;更多的是想要而不得,迫不得已放弃。房地产自商业化之日起就绑架了太多,下一代的教育、良好的居住环境、货币贬值与资产保值……万事有因果,存在即合理。如果真的要“修正”价值观,*活动需尝试从下一代出生之日开始。

小结

这仅仅房地产市场冰山一角,不具备广泛代表性。但是下面一句话与诸位共勉:买房要趁早,没有条件也要创造条件,哪怕以后你卖了呢!

源码:https://gitee.com/52itstyle/python/tree/master/day11