zoukankan      html  css  js  c++  java
  • 我爬了链家青岛市北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` varchar(20) 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

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

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

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

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

    位置分布

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

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

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

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

    带看量

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

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

    总数 单均价 均关注 均带看
    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

    补充一句话:买房请慎重,量力而为,小心经济危机,小心泡沫,更要小心地震。

  • 相关阅读:
    关于微信三点定位法
    PHP 取302跳转后真实 URL 的两种方法
    前端布局神器display:flex
    JS实现document.ready
    为什么无返回值的链表的插入操作头结点一定要用指向指针的指针
    常量字符串和指针
    C语言中指针数组和数组指针的区别
    二维数组简介与使用
    访问者模式
    解释器模式
  • 原文地址:https://www.cnblogs.com/smallSevens/p/10016045.html
Copyright © 2011-2022 走看看