從政府資料開放平台(open data),取得上市上櫃公司基本資料(CSV),使用Python將資料寫入SQLite3資料庫
- 政府資料開放平台 ( https://data.gov.tw/ )
- 程式碼:
## Table : Stocks (stockType,stockID,stockAbbr,industryType,releaseDate)
## stockType : tse->上市,otc->上櫃
## 上市公司基本資料(18419) - 政府資料開放平台 https://data.gov.tw/dataset/18419
## 上櫃股票基本資料(25036) - 政府資料開放平台 https://data.gov.tw/dataset/25036
## 主要欄位說明:
## 出表日期[0]、公司代號[1]、公司名稱[2]、公司簡稱[3]、外國企業註冊地國[4]、產業別[5]、住址、
## 營利事業統一編號、董事長、總經理、發言人、發言人職稱、代理發言人、總機電話、成立日期、上市日期、
## 普通股每股面額、實收資本額、私募股數、特別股、編制財務報表類型、股票過戶機構、過戶電話、過戶地址、
## 簽證會計師事務所、簽證會計師1、簽證會計師2、英文簡稱、英文通訊地址、傳真機號碼、電子郵件信箱、網址
zSQL="""CREATE TABLE IF NOT EXISTS `Stocks` (
`stockType` VARCHAR(4) NOT NULL,
`stockID` VARCHAR(8) NOT NULL,
`stockAbbr` VARCHAR(30) NOT NULL,
`industryType` VARCHAR(30),
`releaseDate` VARCHAR(12),
PRIMARY KEY (`stockID`)
);
"""
oConn.execute(zSQL)
oConn.commit()
zSQL="SELECT * FROM Stocks "
cStocks=oConn.execute(zSQL)
rStock=cStocks.fetchone()
if rStock==None:
##寫入上市公司資料
zCsvUrl="http://mopsfin.twse.com.tw/opendata/t187ap03_L.csv"
oHTML=requests.get(zCsvUrl)
oHTML.encoding='utf-8'
oList=oHTML.text.split('\r\n')
for i in range(1,len(oList)-1):
aList=oList[i].replace('"','').split(',')
zSQL="INSERT INTO Stocks (stockType,stockID,stockAbbr,industryType,releaseDate) values ('tse','%s','%s','%s','%s'); "
zSQL=zSQL%(aList[1],aList[3],aList[5],aList[0])
oConn.execute(zSQL)
oConn.commit()
##寫入上櫃公司資料
zCsvUrl="http://mopsfin.twse.com.tw/opendata/t187ap03_O.csv"
oHTML=requests.get(zCsvUrl)
oHTML.encoding='utf-8'
oList=oHTML.text.split('\r\n')
for i in range(1,len(oList)-1):
aList=oList[i].replace('"','').split(',')
zSQL="INSERT INTO Stocks (stockType,stockID,stockAbbr,industryType,releaseDate) values ('otc','%s','%s','%s','%s'); "
zSQL=zSQL%(aList[1],aList[3],aList[5],aList[0])
oConn.execute(zSQL)
oConn.commit()
- 透過Python寫入的資料:
沒有留言:
張貼留言