iT邦幫忙

DAY 10
2

用python擷取網頁上的開放資訊(數據資料),分析及畫出圖表系列 第 10

用python抓網頁data,及做圖表之十:抓EPS, 左右兩種不同刻度的圖,圓餅圖

  • 分享至 

  • xImage
  •  

http://mops.twse.com.tw/mops/web/t164sb04EPS是菜籃族,號子族有玩股票的人大概都懂的專有名詞,它精簡的表示一家公司的獲利情況,所謂每股盈餘
我們來試抓一千多家公司的EPS。
抓EPS
這麼常用的名詞在財報上是放著

基本每股盈餘	 102年第1季	101年第1季		
 基本每股盈餘	 1.53		 1.29	
稀釋每股盈餘				
 稀釋每股盈餘	 1.53		 1.29	

和財報狗的http://statementdog.com/analysis/tpe/#2330台積電每股盈餘比對,無誤。那怎麼抓呢?

公開資訊觀測站,沒有轉cvs的服務。所以從網頁抓data.

先分析(綜合)損益表的樣子及網址。

IFRSs後(102年)網址是:POST /mops/web/ajax_t164sb04 encodeURIComponent=1&step=1&firstin=1&off=1&keyword4=&code1=&TYPEK2=&checkbtn=&queryName=co_id&TYPEK=all&isnew=false&co_id=2330&year=102&season=01

IFRSs前(101(含)之前)網址是:POST /mops/web/ajax_t05st34 encodeURIComponent=1&step=1&firstin=1&off=1&keyword4=&code1=&TYPEK2=&checkbtn=&queryName=co_id&TYPEK=all&isnew=false&co_id=2330&year=101&season=02

用window你可用fiddle ,筆者在家用firfox/live http headers
接著用之前用過的beautiful soup 和urllib

import urllib.request
from bs4 import BeautifulSoup
url = 'http://mops.twse.com.tw/mops/web/ajax_t164sb04?'\
        'encodeURIComponent=1&step=1&firstin=1&off=1&keyword4=&code1=&TYPEK2=&checkbtn=&queryName=co_id&TYPEK=all&isnew=false&co_id=2330&year=102&season=01'
response = urllib.request.urlopen(url)
html = response.read()
sp = BeautifulSoup(html.decode('utf8'))  #cp950
print(sp)

output:
--------------------------------------------------------------
<tr>
<td class="even" style="text-align:left;white-space:nowrap;"> 基本每股盈餘</td>
<td class="even" style="text-align:right;">                              1.53</td>
<td class="even" style="text-align:right;"></td>
<td class="even" style="text-align:right;">                              1.29</td>
<td class="even" style="text-align:right;"></td>
</tr>
---------------------------------------------------

從裏面抓出EPS

trs=sp.find_all('tr')
for tr in trs:
    tds=tr.find_all('td')
    for td in tds:
        if (td.get_text().strip()=="基本每股盈餘") :
            if (tds[1].get_text().strip()!=''):
                print('2330','102','1',tds[1].get_text().strip())
                print('2330','102','1',tds[3].get_text().strip())

output:
2330 102 1 1.53
2330 102 1 1.29

這時,腦海中浮現,只要有心,人人可以是食神,只要有甜美的湯(beautiful soup),人人可以抓觀測站的data. 甜美的湯太美味了。

底下就不再示範細節。一個公司的List, 逐筆的替換URL的公司,年,季(損益表是季為單位),
抓網頁的data. 寫入EPS table. 第一季是1/1,第二季是4/1,第三季是7/1,第八季是10/1轉換成數字時間。

這時才想到,EPS一年四筆,股價是一年12筆。實作才發現有點技巧。
看起來,財報狗站長在架站時,還真多不足為外人一一細數的困難。


上一篇
用python抓網頁data,及做圖表之九:matplotlib 做表及秀中文
下一篇
用python抓網頁data,及做圖表之十一:抓EPS之二
系列文
用python擷取網頁上的開放資訊(數據資料),分析及畫出圖表22
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

我要留言

立即登入留言