我用Python爬取了李滄最近一年多的二手房成交數據得出以下結論

来源:https://www.cnblogs.com/smallSevens/archive/2019/04/02/10638114.html
-Advertisement-
Play Games

前言 去年年底,博主有購房的意願,本來是打算在青島市北購房,怎奈工作變動,意向轉移到了李滄,坐等了半年以後,最終選擇在紅島附近購置了期房。 也許一些知道青島紅島的小伙伴會問我,為什麼會跑到那鳥不拉屎的地方去買房子,目前只能是一個字:"賭、賭、賭",重要的事情說三遍。下麵來分析一下,我為什麼沒有在李滄 ...


前言

去年年底,博主有購房的意願,本來是打算在青島市北購房,怎奈工作變動,意向轉移到了李滄,坐等了半年以後,最終選擇在紅島附近購置了期房。

也許一些知道青島紅島的小伙伴會問我,為什麼會跑到那鳥不拉屎的地方去買房子,目前只能是一個字:"賭、賭、賭",重要的事情說三遍。下麵來分析一下,我為什麼沒有在李滄買。

爬取數據

爬取了2018年1月份到2019年3月底李滄二手房成交記錄,數據僅限於鏈家,不代表李滄地區的全部數據,但是我覺得應該對大家有一定的參考意義。

創建基本的資料庫:

CREATE TABLE `house` (
   `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '主鍵',
   `url` varchar(50) NOT NULL COMMENT '網路訪問地址',
   `listed_price` double NOT NULL COMMENT '掛牌價格',
   `completion_date` date NOT NULL COMMENT '成交日期',
   `transaction_cycle` int(11) NOT NULL COMMENT '成交周期',
   `modify_price` int(11) NOT NULL COMMENT '調價次數',
   `square_metre` double NOT NULL COMMENT '建築面積',
   `unit_price` double NOT NULL COMMENT '單價',
   `total_price` double NOT NULL COMMENT '總價',
   `age_completion` int(11) NOT NULL COMMENT '建成年代',
   `community_name` varchar(50) NOT NULL COMMENT '所在小區',
   PRIMARY KEY (`id`)
 ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8

爬取代碼:

__author__ = "小柒"
__blog__ = "https://blog.52itstyle.vip/"
import requests
import time
# 導入文件操作庫
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,listed_price,transaction_cycle,modify_price," \
              "square_metre,unit_price,total_price,age_completion,community_name,completion_date) "
        sql = sql + "VALUES(%(url)s,%(listed_price)s, %(transaction_cycle)s,%(modify_price)s,"
        sql = sql + "%(square_metre)s,%(unit_price)s,%(total_price)s," \
                    "%(age_completion)s,%(community_name)s,%(completion_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 = 24
    # 爬取地址
    for i in range(1, int(page_max) + 1):
        print("第幾頁:" + str(i))
        if i == 1:
            house = 'https://qd.lianjia.com/chengjiao/licang/'
        else:
            house = 'https://qd.lianjia.com/chengjiao/licang/pg'+str(i)
        res = requests.get(house, headers=headers)
        soup = BeautifulSoup(res.text, 'html.parser')
        li_max = soup.find('ul', class_='listContent').find_all('li')
        for li in li_max:
            try:
                house_param = {}
                # 所在小區
                community = li.find('div', class_='title').text
                community_name = community.split(" ")[0]
                house_param['community_name'] = community_name
                # 成交地址
                title_src = li.find('a').attrs['href']
                house_param['url'] = title_src
                res = requests.get(title_src, headers=headers)
                soup = BeautifulSoup(res.text, 'html.parser')
                # --------------------------------------------------------#
                # 成交日期
                completion_date = soup.find('div', class_='house-title').find('span').text
                completion_date = completion_date.split(" ")[0]
                completion_date = completion_date.replace(".", "-")
                house_param['completion_date'] = completion_date
                # 掛牌價格
                listed_price = soup.find('div', class_='msg').find_all('span')[0].find('label').text
                house_param['listed_price'] = listed_price
                # 成交周期
                transaction_cycle = soup.find('div', class_='msg').find_all('span')[1].find('label').text
                house_param['transaction_cycle'] = transaction_cycle
                # 調價次數
                modify_price = soup.find('div', class_='msg').find_all('span')[2].find('label').text
                house_param['modify_price'] = modify_price
                # 建築面積
                square_metre = soup.find('div', class_='content').find("ul").find_all('li')[2].text
                square_metre = re.findall(r'-?\d+\.?\d*e?-?\d*?', square_metre)[0]
                house_param['square_metre'] = square_metre
                # 總價
                total_price = soup.find('span', class_='dealTotalPrice').find('i').text
                house_param['total_price'] = total_price
                # 單價
                unit_price = soup.find('b').text
                house_param['unit_price'] = unit_price
                # 建築年代
                age_completion = soup.find('div', class_='content').find("ul").find_all('li')[7].text
                age_completion = re.findall(r'-?\d+\.?\d*e?-?\d*?', age_completion)[0]
                house_param['age_completion'] = age_completion
                write_db(house_param)
            except Exception as e:
                print(e)
        mysql.end("commit")
    mysql.dispose()


if __name__ == '__main__':
    main()

通過數據爬取,一共找到了706套二手成交房。

分析數據

直奔主題,數據分析下,大家比較關心的價格問題,以下是2019年1月-3月的二手房成交量以及成交價格:

位置 成交量 單價
李滄 124 21100

同比去年的二手房成交量以及成交價格:

位置 成交量 單價
李滄 277 21306

嚇的博主趕緊用計算器認認真真,仔仔細細的核算了三遍,才敢寫下這幾個數字,同比去年,單價整整降了206人民幣,此處有掌聲。再看一下成交量,相比去年少了足足一半之多,相信那124套房子也是賣家忍痛降了206人民幣才賣出去的吧!

好了,再看一下大家比較關心的成交周期,2019年1月-3月的二手房成交量以及成交周期:

位置 成交量 成交周期(天)
李滄 124 96

同比去年的二手房成交量以及成交周期:

位置 成交量 成交周期(天)
李滄 277 83

不得不說,相比去年房子的確是難賣了。

小結

很多同事,同學,13、14年就已經上車了,那時李滄1w不到,再看看現在?不想看,沒眼看,不能看。最終沒在李滄買房,也不是買不起,只是看不到降的希望,相對壓力又大一些,而且,也不想把家庭所有的積蓄都賭在這裡。

最後,對於剛需就是一個建議,買早買,有房和沒房看一個城市是不一樣的,努力賺錢的最大意義就是提升你的幸福感。活在人間不食人間煙火?真以為自己是神仙?有些東西一說的實際一點真的是會傷到某些人的心,祝你們用鍵盤戰勝一切。

相關代碼:https://gitee.com/52itstyle/Python


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 學習web的第五天 CSS層疊樣式表,也稱為級聯樣式表,用來設計網頁風格。 老師說內聯樣式表不介意我們使用,我們只要瞭解並掌握就行了,重點給我們講解了外部樣式表。 css的優勢:1、表現和內容相分離,css通過定義html標記的樣式,使得頁面內容和顯示相分離,簡化了網頁格式設計。 2、加強了網頁的表 ...
  • v-bind:title="message" ...
  • 背景 去年年底的時候,靜兒在團隊會議中提出了自己的對整個服務將來的規劃。靜兒心裡明白自己的架構設想是可實現的,但是遠超目前的架構。被質疑無法落地。於是靜兒將一些概念的東西全都拋去,直接針對具體的項目做領域拆分。項目也在一點點像靜兒原來規劃的演進。 靜兒認為這個不做管理的一個好處:「對技術的挑戰要大的 ...
  • 1 IGame游戲公司的故事 1.1 討論會 話說有一個叫IGame的游戲公司,正在開發一款ARPG游戲(動作&角色扮演類游戲,如魔獸世界、夢幻西游這一類的游戲)。一般這類游戲都有一個基本的功能,就是打怪(玩家攻擊怪物,藉此獲得經驗、虛擬貨幣和虛擬裝備),並且根據玩家角色所裝備的武器不同,攻擊效果也 ...
  • 定義: 保證一個類僅有一個實例,並提供一個全局訪問點 適用場景: 確保任何情況下這個對象只有一個實例 詳解: 1.私有構造器: 將本類的構造器私有化,其實這是單例的一個非常重要的步驟,沒有這個步驟,可以說你的就不是單例模式。這個步驟其實是防止外部函數在new的時候能構造出來新的對象,我們說單例要保證 ...
  • 又和大家見面了。首先,和大家說聲抱歉,之前的幾篇文章,可能條理清晰之類的做的不太好,每篇文章的篇幅也比較長,小編在收到讀者的建議之後, 也是認真的思考了一番。之前的想法是儘量把一個模塊介紹完,沒想到一個模塊寫著寫著就寫長了。在之後的文章里,需要認真分段,做到能簡潔就簡潔,能分塊就分塊,在利用大家碎片 ...
  • 官網:www.fhadmin.org 工作流模塊 1.模型管理 :web線上流程設計器、預覽流程xml、導出xml、部署流程 2.流程管理 :導入導出流程資源文件、查看流程圖、根據流程實例反射出流程模型、激活掛起 3.運行中流程:查看流程信息、當前任務節點、當前流程圖、作廢暫停流程、指派待辦人 4. ...
  • 記錄一下最近整理的spring boot項目 項目地址:https://gitee.com/xl0917/spring-boot 1.選擇Spring Initializr 一直點擊next,直到創建完成 2.創建spring boot子模塊,創建無任何模板的maven項目 3.項目結構 4.pom ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...