爬蟲: 下載台股歷史股價 TWSE爬蟲: 下載台股歷史股價 TWSE

適用對象:

  • 有 Python 基礎. 可以自己執行 Python 程式的人.
  • 有興趣學習 Python 爬蟲程式的人.

知識基礎:

  1. Python
  2. Pandas : Python 數據分析的資料結構函式庫. 是爬蟲程式的主要核心.
  3. Requests : Python 網路連線功能. 作為 Http 資源下載使用.

爬蟲程式的概念:

  1. 其實爬蟲程式的概念很簡單. 找到你要的網路資源 (包含網頁, 檔案…) , 讀入後去除你不需要的內容, 再將你需要的資料存成檔案即可.
  2. 讀取網路資源, 使用的是 requests 這個 package. 只要一行, 就完成.
  3. 因為股價資料, 主要是數字為主, 文字資料為輔. 尤其是我們需要的是類似 “表格” 式的資料時, 使用 Pandas 是最方便的. 舉例來說, 如果你查找的網頁只有一個表格. 讀入到 pandas 的格式, 只要一行. 存成 csv 檔, 也只要一行. 換句話說, 你的主程式只要三行, 就完成了.
  4. 資料處理階段: 對下載的資料, 去蕪存菁, 只留你需要的資料.
  5. 將資料存入到 pandas 結構. 類似於 R 語言的 dataframe.
  6. 整理 pandas 格式. 匯出成你要的格式.

程式說明:

以下針對程式的部份, 簡單的說明: (請注意, 如果只是為了完成下載股價, 其實 4, 5 行程式碼就完成了. 不過為了讓下載更自動化, 所以, 額外加了很多控制)

載入 packages:

import requests
from io import StringIO
import pandas as pd
import numpy as np

參數資料準備

資料準備

# 下載股價的日期
dates = pd.date_range(‘2019-05-01′, periods = 1, freq=’MS’)
# 要下載公司的清單
comlist = [‘2330′,’6446’]

# 依公司清單執行迴圈
for comid in comlist:
x = ”
data = []
stockid = []

for dt in dates:
# 下載股價
turl = “http://www.twse.com.tw/exchangeReport/STOCK_DAY? response=csv&date=” + dt.strftime(‘%Y%m%d’) + “&stockNo=” + comid
r = requests.post(turl)
# 整理資料,變成表格
x = r.text.split(‘\r\n’)

# extract true data
y = x[2:len(x) – 6]

for line in y:
data.append(line.replace(‘”,”‘, ‘;’).replace(‘”‘,”).replace(‘,’,”).split(‘;’))

# 最後的動作. 將資料匯出成 csv 檔
cols = x[1][0:len(x[1]) -1].replace(‘”‘,”).split(‘,’)
df = pd.DataFrame(data, columns=cols)
dfcols = list(df.columns[1:len(df.columns)])
df1 = df.loc[:, list(df.columns[1:len(df.columns)])]
df1.index=df[‘日期’]
fname = comid + ‘.csv’
df1.to_csv(fname)

注意事項:

  1. TWSE 在連線時, 會有次數限制. 如果太頻繁連線, 程式就會回傳連線錯誤. 可以用 try: except: 處理.
  2. 這程式是可以允許多檔股價下載. 所以, 在處理 pandas 的資料結構時, 記得要建立 company id 的陣列, 再與股價資料合併. 這個部份讓各位處理. 作練習用.

Leave a Reply

Your email address will not be published. Required fields are marked *

如何將 Flask 系統安裝在 Apache 下如何將 Flask 系統安裝在 Apache 下

Flask application 是一套成長快速的 web framework。它的核心小,擴充性佳。對中小型的系統來說,是很方便的工具。 如果你對使用 Flask 開發有興趣,可以參考官方的教學文件。在未來,我也會逐一向大家介紹說明。 本篇文章主要是用來說明,如何將已開發完成的 Flask application 安裝在 Apache 下。觀看實際的 demo. (http 自動轉向到 https, 並啟動 Flask application ) . 這樣做的目的,或是好處: 你可以將你所有開發的系統,都掛在同一個網域(domain) 下。就如同本站,只有一個 comhawk.com 的網域. 使用 WordPress

regexp

正則表達式與爬蟲正則表達式與爬蟲

不知道什麼是 Regexp 別說你懂爬蟲~~ 帶你了解 Regexp 正則的強大文字處理功能 什麼是 正則表達式 ( Regexp ) ? Regular Expression , 中文稱為正則表達式.  它的前世今生, 請看 WIKI  .   為什麼要在這裏說明什麼是 Regexp 呢? 即使是很多的程式設計師, 對於正則的使用, 也未必清楚. 在大數據時代來源之前, 正則的使用, 耳熟能詳的, 就只是在