續接上篇文章

[Python來爬蟲系列文4]用python爬html 檔 (以"月報"資料為例)

連結: https://goo.gl/YWe61y

我們這次要來爬每季的財務報表
在公開資訊站的連結是這個
http://mops.twse.com.tw/server-java/t164sb01?step=1&CO_ID=1101&SYEAR=2017&SSEASON=3&REPORT_ID=C

這個網頁的爬蟲相對簡單
http://mops.twse.com.tw/server-java/t164sb01?step=1&CO_ID=1101&SYEAR=2017&SSEASON=3&REPORT_ID=C

先注意一下~ 我們有 4 個變數可以控制
分別是 股票代號 , 年度 , 季別 , 財務類別
這在我們以後 更新資料的時候 一定會用到的~

另外看看網址中 這4個變數分別就是
CO_ID: 股票代號 
SYEAR: 年度
SSEASON: 季別
REPORT_ID: 財務類別 ( 個別財報(A) 個體財報(B) 合併報表(C) )
注: 大部分都是看 合併報表

有了以上的觀察我們就來開始爬蟲吧
 


### 爬蟲起手式
import requests

# requests.get 將網站給爬下來
res = requests.get('http://mops.twse.com.tw/server-java/t164sb01?step=1&CO_ID=1101&SYEAR=2017&SSEASON=3&REPORT_ID=C')
res.encoding = 'big5'                              #變成中文 之前講過 'big5' 不行就用 'utf-8' 

from io import StringIO                          #跟之前一樣 處理 text 和 str 的 套件~~
import pandas as pd

dfs = pd.read_html(StringIO(res.text))
# 1.將 res.text 用 StringIO 轉成 檔案
# 2.再用 pd.read_html 將 html文字檔轉成 dataframe

#### 這邊的 dfs 其實是多個dataframe
#### 我們分別看看裡面有哪些內容 只取 3 個對應看看

### 這3 個表分別代表 網頁的 3 個部分

### 所以表示我們是有真的抓到這些表格的
 


接下來小白要來講一下 怎麼儲存跟讀取這些季報
小白最近跟別人合作了小專案
所以多學會了 os 這個套件
正好這邊用得上~

首先講個幾招
import os
##第一招: 抓現行目錄
#他會抓目前你開的這個 .IPYNB檔 所在的資料夾
path=os.getcwd() 
print(path)



#接著執行看看
mylist=os.listdir()
print(mylist)
#確實有這三樣~

##第三招: 創新的資料夾
#利用 mkdir 來創新的資料夾
# 先檢查downloads 這個資料夾有沒有在現行目錄
if 'downloads' not in os.listdir():  
    os.mkdir('downloads') #確認沒有 就創建一個
mylist=os.listdir()             #最後檢查看一下有沒有
print(mylist)

###所以真的創好了~ 那我們就來講我們財報怎麼儲存跟讀取

## 首先是 儲存

## 設定存檔的路徑
#可以自己打 downloads\2330.html
# 比較聰明的小方式 是用os.path.join 
#他會根據作業系統幫我們加 "\" 進去
path = os.path.join('downloads', s + '.html')  # 記得要加副檔名喔~~    
print(path)

# 接著將資料寫進去    
# 將檔案打開,寫入
f = open(path, 'w', encoding='big5')
f.write(res.text)
f.close()
# 將檔案關閉
#可以去目錄下看到它真的寫進去了~~

## 然後是 讀取
#讀取比較簡單 
#一樣先設目錄和檔案名稱
#用 read_html 就可以
path = os.path.join('downloads', s + '.html')
dfs=pd.read_html(path, encoding='big5')

 

### 好勒~~~ 今天的文章就到這邊了 希望各位喜歡
### 最後附上的code裡面有包含 怎麼用 for loop來寫抓多支股票
### 大家掰掰~~ 我們下次見

檔案連結:http://ge.tt/3h3Ffqp2

名稱為 "抓季報.IPYNB"

 

arrow
arrow
    全站熱搜

    Markjong001 發表在 痞客邦 留言(0) 人氣()