因為陳陳在研究所時就是在學程式跟股市的結合,而我們最常用的程式就是python
陳陳想說就來分享一下我們是如何學習的吧!!
今天先從簡單的來開始,我們的目標就是將上市櫃公司資訊爬下來
沒錯就是這麼簡單的任務,我們只要透過幾行程式就能抓下來喔!!
雖然大家會想說我從網路上複製再貼上Excel就好啦,何必那麼麻煩呢?
沒錯,一開始淺的東西大家會想說有簡單的方式能做到,但未來再做分析或預測時,成千上萬的資訊我們總不會還在一一複製吧
所以陳陳只是教一個概念,學會抓上市櫃股票下來,就能再延伸出去,像是股價、成交量等等,都是差不多的方式去爬取下來
那話不多說,我們開始進入教學吧!!
【Step1 找到上市櫃股票清單的地方】
首先要爬蟲當然要先知道要去哪爬,所以我們先去〝台灣證券交易所〞找尋相關資料
進到台灣證券交易所後,我們點選上方的產品與服務
接下來選擇證券編號查詢
進去以後點選證券編號 分類查詢
進去以後我們能在市場別選擇上市或上櫃等等的市場,有價證券別的部分可以選要股票或ETF等等
那陳陳今天以上市股票為例子做爬取,上櫃一樣,只要市場別選上櫃,然後爬取操作步驟差不多
【Step2 利用python的requests將資料爬蟲下來】
首先我們先將我們的網址連結複製下來
這是我們上一步查詢到的上市股票清單
https://isin.twse.com.tw/isin/class_main.jsp?owncode=&stockname=&isincode=&market=1&issuetype=1&industry_code=&Page=1&chklike=Y
那在這次的爬蟲我們會使用到2個package就是request跟pandas
所以我們先將他們import進來
1 import requests
2 import pandas as pd
那接下來就是先利用requests連接到網站,並且將資料抓取下來
requests就像模擬網頁瀏覽器,我們利用request.get將網頁的原始碼抓取下來
3 res = requests.get("https://isin.twse.com.tw/isin/class_main.jsp?owncode=&stockname=&isincode=&market=1&issuetype=1&industry_code=&Page=1&chklike=Y")
4 print(res.text)
【Step3 利用python的pandas將資料轉換成DataFrame】
到這裡我們就算把上市股票抓下來了,但我們不是要原始碼,我們是要前台的那些資料阿~~
沒錯,所以接下來我們要將資料傳換成DataFrame
那這時我們就要用到上一步所提到的pandas
pandas就有點像我們的Excel,pandas可以操作各式各樣的表格,並進行運算
所以這裡我們利用pandas裡面的pd.read_html將我們上一步抓取的res.text的原始碼作轉換
而最後的[0]是表示,我們只抓取原始碼的第一段,因為通常一個網頁會有很多欄位,像是側欄等等,所以我們就選取我們資訊所在的位置
最後就會跑出我們想要的上市股票的清單欄位拉
5 df = pd.read_html(res.text)[0]
6 df
【Step4 將資料進行整理】
接下來我們要將資料做個整理,好讓我們在看時能輕鬆簡單的看
那首先我們就是要將不必要的欄位刪除,就看各位不需要什麼自己決定吧
陳陳是認為頁碼編號、國際證券編號、有價證券別、CEICode跟備註是陳陳不需要的
所以陳陳要將他們刪除
那這裡我們就利用drop來刪除不必要的欄位
大家有看到上一張圖的最上方有出現0、1、2、3等9行嗎跟左方也有,我們drop掉他們只需要輸入數字就好了,是不是很方便
而axis是表示你要刪掉行的還是列的,0代表行,1代表列,如果不輸入他預設值就是0
7 df = df.drop([0,1,5,8,9],axis = 1)
8 df
接下來上方跟左方的數字不好看,所以我們要做替換,上方我們用名稱也就是第0行來做替換,左方我們用有價證券代碼也就是第2列替換,這樣子比較好看
首先我們先處理上方的名稱,df.columns表示我的標題欄位要是哪一行,我們用df.iloc[0],也就是第0行來做替換
接下來,我們已經替換了標題欄位,那我們就不需要第0行了,我們將df定義只要從第1行開始就好,也就是df.iloc[1:]表示從1到結束
這樣我們就完成上方的替換了
9 df.columns = df.iloc[0]
10 df = df.iloc[1:]
11 df
接下來我們替換一下左邊的欄位名稱
左邊的欄位名稱我們稱為索引欄,也就是我們查詢時要查詢的欄位,所以我們會用到df.set_index來替換,括號內就輸入要替換的列名就可以了
12 df = df.set_index("有價證券代號")
13 df
恭喜,到這裡我們就大功告成的將資料爬取下來了
那有人會問這些資料爬取下來要做甚麼呢?
這些資料爬下來就可以進行分析以及計算了,能夠化成圖表等等的方式呈現,甚至是跟其他資料做結合等等
這些教學我們往後有時間再一一為各位做教學
如果想定期收到我最新文章的資訊可以追蹤我的FB粉絲專頁 : https://www.facebook.com/adsads023023
留言列表