2022年1月6日 星期四

抓證交所每月業績的python碼

 因為受到航海王極大刺激(一個人一年賺45億...),所以我撿起了丟下10年的程式語言,在我一直只有安裝steam的電腦上裝上了python。然後寫段code可以分別去抓證交所與櫃買中心每月17號開放下載的公司業績csv檔,再把兩個檔案取出增減幅度欄位後合併成一個檔案。

csv檔有趣的是有個附註欄位,大部分公司都是空白,少部分公司會寫,不過有些時候會出現亂碼,這會讓檔案在合併時某幾筆資料憑空多出一欄或兩欄。我是用LiberOffice去開csv,然後用資料升冪排序去看累計營收增加百分比高的公司,所以這種程度的錯亂還能接受。

合併之後的檔案只留下,代號、公司名、產業、比上月增減百分比、比去年同月增減百分比、累計營收增減百分比、備註,這7個欄位。用Excel就可以把上市櫃的公司放在一起比較,目前1751家。

程式碼不太好看,就不用太在意了 XD

###########################################

import requests
import pandas as pd

url1 = 'https://mopsfin.twse.com.tw/opendata/t187ap05_L.csv'
url2 = 'http://mopsfin.twse.com.tw/opendata/t187ap05_O.csv'

headers = {
    "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36"
}

with requests.get(url1,headers= headers,allow_redirects=True) as res:
 open('tse.csv','wb').write(res.content)

with requests.get(url2,headers= headers,allow_redirects=True) as res:
 open('otc.csv','wb').write(res.content)

rs1 = pd.read_csv('tse.csv',encoding='utf-8',usecols=[2,3,4,8,9,12,13])
rs2 = pd.read_csv('otc.csv',encoding='utf-8',usecols=[2,3,4,8,9,12,13])
list = [rs1,rs2]
rs = pd.concat(list)
rs.to_csv("output.csv",index=False)

最常被訪