3C科技 娛樂遊戲 美食旅遊 時尚美妝 親子育兒 生活休閒 金融理財 健康運動 寰宇綜合

Zi 字媒體

2017-07-25T20:27:27+00:00
加入好友
因為陳陳在研究所時就是在學程式跟股市的結合,而我們最常用的程式就是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 恭喜,到這裡我們就大功告成的將資料爬取下來了 那有人會問這些資料爬取下來要做甚麼呢? 這些資料爬下來就可以進行分析以及計算了,能夠化成圖表等等的方式呈現,甚至是跟其他資料做結合等等 這些教學我們往後有時間再一一為各位做教學

本文由adsads023023pixnetnetblog提供 原文連結

寫了 5860316篇文章,獲得 23313次喜歡
精彩推薦