在眾多的資料分析專案中,不動產實價也是很常被拿來分析的主題,那想要利用Python網頁爬蟲蒐不動產的資料,除了可以爬取網站上的資料之外,地方政府也有透過OpenAPI來提供各種不同的開放資料(OpenData),讓大家進行多元的分析或應用。這篇文章就來和大家分享,如何利用Python網頁爬蟲爬取臺北市資料大平臺上的不動產實價開放資料。
- 開放資料(OpenData)存取方法
- Python網頁爬蟲存取開放資料(OpenData)
- Python網頁爬蟲爬取開放資料(OpenData)
一、開放資料(OpenData)存取方法
前往臺北市資料大平台,如下圖:
在搜尋的地方輸入「臺北市實價周報」,就可以找到臺北市不動產實價周報的開放資料(OpenData),如下圖:
二、Python網頁爬蟲存取開放資料(OpenData)
瞭解臺北市不動產實價周報的開放資料API使用方式之後,就可以開啟Python網頁爬蟲專案,引用requests模組,如下範例:
import requests
接下來,Python網頁爬蟲發送請求到臺北市不動產實價周報的開放資料API,並且傳入必要的參數,如下範例:
import requests # 參數 params = { "resource_id": "2979c431-7a32-4067-9af2-e716cd825c4b" } # 發送請求 response = requests.get( 'https://data.taipei/api/v1/dataset/2979c431-7a32-4067-9af2-e716cd825c4b?scope=resourceAquire', params=params )
假設我們只想要利用Python網頁爬蟲爬取10筆的臺北市不動產實價資料,那就要增加傳入limit選擇性參數,如下範例第7行:
import requests # 參數 params = { "resource_id": "2979c431-7a32-4067-9af2-e716cd825c4b", "limit": 10 } # 發送請求 response = requests.get( 'https://data.taipei/api/v1/dataset/2979c431-7a32-4067-9af2-e716cd825c4b?scope=resourceAquire', params=params )
這時候我們將Python網頁爬蟲取得的回應結果(response)印出來,如下範例:
import requests # 參數 params = { "resource_id": "2979c431-7a32-4067-9af2-e716cd825c4b", "limit": 10 } # 發送請求 response = requests.get( 'https://data.taipei/api/v1/dataset/2979c431-7a32-4067-9af2-e716cd825c4b?scope=resourceAquire', params=params ) # 印出回應的資料 print(response.text)
可以看到如下圖截取的JSON格式結構:
Python網頁爬蟲成功取得回應的臺北市不動產實價資料,接下來就可以爬取所需要的欄位資料。
三、Python網頁爬蟲爬取開放資料(OpenData)
首先,Python網頁爬蟲呼叫Python內建的json()函式,解析回應的臺北市不動產實價資料,並且存取results資料欄位,如下範例第17行:
import requests # 參數 params = { "resource_id": "2979c431-7a32-4067-9af2-e716cd825c4b", "limit": 10 } # 發送請求 response = requests.get( 'https://data.taipei/api/v1/dataset/2979c431-7a32-4067-9af2-e716cd825c4b?scope=resourceAquire', params=params ) # 解析回應的資料、存取資料欄位 data = response.json()['result']['results']
假設我們想要爬取其中的district(行政區)、location(土地區段位置)、landa(土地移轉總面積(坪))與tprice(交易總價(萬元))等四個欄位,就可以利用For迴圈讀取回應的臺北市不動產實價資料集,並且爬取所需的四個欄位,如下範例:
import requests # 參數 params = { "resource_id": "2979c431-7a32-4067-9af2-e716cd825c4b", "limit": 10 } # 發送請求 response = requests.get( 'https://data.taipei/api/v1/dataset/2979c431-7a32-4067-9af2-e716cd825c4b?scope=resourceAquire', params=params ) # 解析回應的資料、存取資料欄位 data = response.json()['result']['results'] # 爬取所需的欄位資料 for d in data: print(d['district'], d['location'], d['landa'] + '坪', d['tprice'] + '萬元')
執行結果
四、小結
這篇文章示範了Python網頁爬蟲透過OpenAPI爬取開放資料(OpenData)的方法,主要的步驟就是先瞭解OpenAPI的使用方式,接下來利用Python網頁爬蟲發送請求進行存取,並且解析回應的開放資料(OpenData),最後即可爬取所要分析的欄位資料了。除此之外,本文使用了臺北市實價周報開放資料為例,讓大家學會爬取不動產的實價資料,以進行房地產價格的分析。
留言
張貼留言