iT邦幫忙

0

用python抓網頁data,及做圖表之十三:抓EPS歷史data

  • 分享至 

  • xImage
  •  

巴菲特提到:
所有的男人的不幸出自同一個原因,即他們都不能安份地呆在一個房間裡。

參加鐵人賽,可以減少男人的不幸,但是可否減少女人的不幸,就不清楚了。
程式如下:

import urllib.request
from bs4 import BeautifulSoup
url = 'http://mops.twse.com.tw/mops/web/ajax_t51sb08?'\
        'encodeURIComponent=1&step=1&firstin=1&off=1&TYPEK=sii&year=101&season=01'
response = urllib.request.urlopen(url)
html = response.read()
sp = BeautifulSoup(html.decode('utf8'))    
tbls=sp.find_all('table',attrs={ 'class' : "hasBorder"})    
j=0
for k in range(0,5):
    i=0
    trs=tbls[k].find_all('tr')
    for tr in trs:
        i=i+1
        if i>1:
            #print(tr)
            tds=tr.find_all('td')
            if len(tds)>1:
                j=j+1
                print (tds[0].get_text(),tds[1].get_text(),tds[len(tds)-1].get_text())    
                
print(j)

沒想到,硬要用之前的邏輯來套,
卻不適用。重寫了,用最簡單的邏輯來寫。

這的損益表,在table的設計樣式上,和102年之後的不同。

在一個table裏包好幾個th, 這讓筆者繞了好大的彎路。
最後還是用到最簡單的邏輯,基本每股營餘,在最右邊的欄位來解。

因為歷史資料(101及以前)和102年及之後,
的網頁格式不一致(外表看起來很像),導致抓data的程式要修正,
一修正,竟然因為沒寫法,無窮迴圈,跑不出答案,因為我是用WEB版ipython,
在關網頁時,又不小心把沒存檔的鐵人文關掉,二度傷害。真傷!!

一不小心,又二度busy(ipython跑個不停)了!!好慘!!

因為實在心有不甘,再快速測了,101年,2,3,4季,想不到,竟然都可抓出EPS,
以為是沒有規則的亂寫,其實別人也是有規則的出表,只是筆者太愚眛,看不出來罷了!


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言