導讀
先前寫了一篇關於爬蟲入門的教學:【Python】 資料爬蟲入門 - 貨幣價值實時抓取,實際上資料爬蟲的應用並不會只抓1筆資料,而是會持續捕捉數千、數萬筆資料,可以水平跨類別的抓取資料、又或是持續蒐集不同時間點的資料。這次,我們就來將「持續蒐集得來的資料繪製為線圖」。
目標
階段性目標
實作步驟
輸入以下程式碼資料抓取前置作業:
import requests
import matplotlib.pyplot as plt
import time
from datetime import datetime
以下程式碼則為本資料抓取的實作環節,測試成功後即可改寫為類別或副程式:
timestamp = [] # 設定記錄時間戳記的list
price = [] # 設定記錄價格的list
print("於 ", datetime.now().strftime('%Y-%m-%d %H:%M'), " 進行比特幣價格追蹤:")
for i in range(1, 6): # 先用 for 迴圈測試 5 次運行的情況
# 擷取目標 url 的資料
response = requests.get("https://api.coindesk.com/v1/bpi/currentprice.json")
data = response.json() # 將資料以 json 格式進行儲存
bc = data["bpi"]["USD"]["rate_float"]
timestamp.append(datetime.now().strftime('%H:%M'))
price.append(bc)
print("已記錄第", i , "筆價格,下一筆將在 1 分鐘後進行記錄")
if (i < 5): time.sleep(60) # 間隔60秒,若已至最後一次則跳過此步驟
plt.plot(timestamp, price)
plt.show
測試成功後,就可以將程式改寫為類別或副程式,以下將其改寫為副程式:
# 將爬蟲程式碼轉換為副程式,方便未來管理、修改
# 此副程式須輸入欲記錄的資料「筆數」(records)
def bitcoin_crawler(records):
timestamp = []
price = []
print("於 ", datetime.now().strftime('%Y-%m-%d %H:%M'), " 進行比特幣價格追蹤:")
for i in range(records):
response = requests.get("https://api.coindesk.com/v1/bpi/currentprice.json")
data = response.json()
bc = data["bpi"]["USD"]["rate_float"]
timestamp.append(datetime.now().strftime('%H:%M'))
price.append(bc)
print("已記錄第", i+1 , "筆價格,下一筆將在60秒後記錄")
time.sleep(60)
plt.plot(timestamp, price)
plt.show
呼叫該副程式時,直接輸入定義好的副程式名即可,以下則讓使用者自行輸入要記錄的資料數目:
i = int(input("請問您現在要開始記錄的比特幣價格筆數,請輸入正整數:"))
bitcoin_crawler(i)
沒有留言:
張貼留言