最新消息

[公告2014/05/30] 如有需要將部落格中,任何一篇文章的程式碼使用在商業用途,請與我聯繫。

[公告2015/04/26] Line版的 iInfo程式與投資應用 群組已上線想加入的朋友們,請先查看 "入群須知" 再與我聯繫 Line : aminwhite5168,加入請告知身分與回答 "入群須知" 的問題。

[公告2018/04/22] 台北 Python + Excel VBA 金融資訊爬蟲課程,課程如網頁內容 金融資訊爬蟲班:台北班 Python 金融資訊爬蟲、EXCEL VBA 金融資訊爬蟲

[公告2019/01/08] 請注意:我再次重申,部落格文章的程式碼,是要提供各位參考與學習,一旦網頁改版請自行修改,別要求東要求西要我主動修改,你們用我寫東西賺錢了、交差了,請問有分我一杯羹嗎?既然賺錢沒分我,請問有什麼理由要求我修改,如果沒能力改,就花錢來找我上課。

[公告2019/12/01] 若各位有 Excel VBA 案子開發需求,歡迎與我聯繫,可接案處理。

[公告2020/05/22] 頁面載入速度慢,起因為部分JS來源(alexgorbatchev.com)失效導致頁面載入變慢,目前已做調整,請多見諒。

2012年8月31日 星期五

資訊站台

國外網站
財經網
財經論壇
綜合型(技術面+基本面)---部落格
技術面---部落格
基本面---部落格
綜合型工具(基本面、技術面、籌碼面)
基本面工具

學習推薦

有投資課程
基本面書籍
  • 操盤人教你看財務報表     ISBN:9789867283245
  • 一次就懂:怪老子帶你看懂財報選好股     ISBN:9789867283412
  • 賺錢的邏輯你懂了!用大白話說的財務報表速讀術   ISBN:9789866316128
  • 財報的秘密—探索財報數字內涵,掌握公司價值變化   ISBN:9789866511158
  • 打敗外資賺大錢   ISBN:9789867615053(絕版書)
  • 聰明買台股   ISBN:9789868346529(絕版書)
技術面書籍
  • 技術分析不設防:化繁為簡   ISBN:9789866366017
Multicharts書籍
  • PowerLanguage程式交易語法大全   ISBN:9789866320156
  • multicharts快譯通   ISBN : 9789866320309
  • 分析師關鍵報告:期貨交易篇   , ISBN:9789866320408
  • 分析師關鍵報告2:張林忠教你程式交易   ISBN:9789866320743
  • 股市的科學煉金術:程式交易全圖解   ISBN:9789867283528
Python教學
Python參考書籍
  • Python 入門   ISBN:9578247354 (絕版書)
  • Python Web開發學習實錄   ISBN:9787302266334 (簡體書)
  • Python 程式設計入門 (適用於 2.x 與 3.x 版)    ISBN:9789864340057 (適合入門)
  • 金融科技實戰:Python與量化投資    ISBN:9864342703 (適合入門)
  • Python 入門邁向高手之路王者歸來    ISBN:9865000598 (適合入門)
Excel VBA參考書籍
  • 超圖解Excel VBA 基礎講座   ISBN:9789574423439 (適合入門)
  • 超圖解Excel VBA 應用講座   ISBN:9789574423996 (適合入門)
  • 跟我學Excel VBA   ISBN:9789862760352(適合入門)
  • 跟我學Excel VBA:將複雜的操作用一個按鍵就搞定!(適用2016/2013/2010/2007)   ISBN:9789862769843 (適合入門)
  • Excel VBA 巨集的職場效率術:無痛學習 VBA程式×步驟式教學錄製巨集×200個範例立即套用  ISBN:9789864342839(適合入門)
  • Excel VBA基礎必修課-增量版(適用Excel 2016/2013/2010)   ISBN:9789864763948(適合入門) 
  • Excel VBA與巨集程式設計:新手入門就靠這一本   ISBN:9789862016909 (適合進階)
  • Excel VBA一點都不難:一鍵搞定所有報表   ISBN:9789862017562  (適合進階)
  • Excel VBA徹底研究   ISBN:9789575277239 (絕版書、適合進階)
  • Excel與外部資料無縫整合:使用Excel VBA與SQL建置小型系統與資料分析,快速提昇辦公效率200問   ISBN:9789862015889
  • 詳解Excel+Access的資料庫整合應用實務   ISBN:9789862012376
  • Excel 2003 Power Programming with VBA
JavaScript

關於作者

About Me
個人背景
大學念電機系以C語言寫程式,碩士論文題目與生物資訊相關「DNA蛋白質摺疊結構預測」,以C++、Perl、Shell作為研究的使用語言,畢業後在工作上則以C/C++為主要語言,開發MFC Windows視窗,平時自己喜歡使用程式輔助在數據方面的分析與應用,主要語言以Python與Excel VBA為主。
在2012年建立個人網站《iInfo資訊交流》,主要分享網路爬蟲、C/C++、C#、Excel VBA、Python、Google Apps Script、Batch軟體整合應用等相關技術內容為主,歡迎各領域朋友相互交流。

專長 
  • C/C++、 Excel VBA、VBScript、Python、Google Apps Script、Batch、C#、MultiCharts
  • 網路資料爬蟲 (Excel VBA、VBScript、Python、Google Apps Script)

個人網站與粉絲專頁
學歷
  • 台大生物產業機電工程所碩士 (2006~2008),網頁連結
  • 龍華電機工程學系 (1999~2005),網頁連結
  • 大安高工冷凍空調科 (1996~1998),網頁連結

經歷
  • 凱衛資訊專案副理 (2015/10 ~ 迄今)
    1.  桌機看盤軟體開發與維護。
    2.  券商軟體功能優化。
    3.  Android手機看盤軟體開發與維護。
    4.  Python台股盤後資料抓取與協助資料庫建置。
    5.  Excel 與 MultiCharts 整合應用講師。
  • 仁寶電腦高級軟體工程師 (2008/10 ~ 2015/09)
    1.  工廠產線測試軟體與硬體的維護與開發。
    2.  協助廠商開發ODM/OEM 測試軟體。
    3.  C/C++為主,開發Console與GUI軟體,在Winpe、Windows、UEFI上運作。
  • 台北碩士文化教育事業業務專員 (2003/09 ~ 2008/07)
    1.  協助大學生規劃研究所考試的課程內容與分析各類研究所出路。
    2.  大專院校校園行銷企劃與招生業務。
教學經驗
勞動部 - 產業人才投資計畫

      2024年度課程 - 行政院勞動部勞動力發展署北基宜花金馬分署
    • 臺灣職能訓練產業工會 台灣文創訓練中心
      • 2025/01/05 ~ 2025/03/02 (週日整天) 「113-157266 Python網路爬蟲自動化實務班第01期 - 113年政策性計畫 - 45小時」連結招生簡章
      • 2024/12/24 ~ 2025/02/18 (週二晚、週四晚) 「113-157263 Python量化分析交易策略與串接券商API實務班第01期 - 113年政策性計畫 - 45小時」連結招生簡章
      • 2024/11/10 ~ 2024/12/22 (週日整天) 「113-157264 Python資料科學分析程式設計班第01期 - 113年政策性計畫 - 42小時」連結招生簡章
      • 2024/11/05 ~ 2024/12/19 (週二晚、週四晚) 「113-157265 Python資料科學分析、視覺化呈現與資料庫實務班第01期- 113年政策性計畫 - 42小時」連結招生簡章
      • 2024/09/03~2024/10/22 (週二晚、週四晚) 「113-157272 Python Line Bot機器人與資料庫整合實務班第01期- 113年政策性計畫 - 45小時」連結招生簡章
      • 2024/09/01~2024/10/27 (週日整天) 「113-157260 Python大數據金融股票期貨網路爬蟲資料分析實務班第01期 - 113年政策性計畫 - 54小時」連結招生簡章
      • 2024/08/31~2024/10/12 (週六整天、週日晚) 「113-157278 以Python融合AI ChatGPT打造Line Bot機器人大腦班第01期 - 113年政策性計畫 - 54小時」連結招生簡章
      • 2024/06/14~2024/08/11 (週五晚、週日晚) 「113-157277 以Python融合AI ChatGPT打造Line Bot機器人大腦班第01期 - 113年政策性計畫 - 54小時」連結招生簡章
      • 2024/02/03~2024/03/23 (週六整天) 「112- 150408 Python Line Bot機器人與資料庫整合實務班第01期 - 112年政策性計畫 - 42小時」連結招生簡章
      • 2024/01/22~2024/03/13 (週一晚、週三晚) 「112-150405 Python資料科學分析程式設計進階班第01期 - 112年政策性計畫 - 42小時」連結招生簡章
    • 臺灣勞動力服務人員職業工會聯合會
      • 2025/01/06~2025/03/05 (週一晚、週三晚) 「113 - 157196 Python程式交易整合券商API應用實務班 - 113上半年計畫 - 42小時」連結招生簡章
      • 2024/09/13~2024/12/20 (週五晚) 「113 - 157195 Python網路爬蟲自動化實務班 - 113上半年計畫 - 42小時」連結招生簡章
      • 2024/04/27~2024/06/22 (週六整天) 「113 - 155081 Python大數據程式設計與資料分析應用班 - 113上半年計畫 - 48小時」連結招生簡章
      • 2024/04/15~2024/07/22 (週一晚) 「113- 155077 Python資料科學分析、視覺化呈現與資料庫班 - 113上半年計畫 - 42小時」連結招生簡章
    • 文化大學推廣部
      • 2024/12/21 ~ 2025/01/25 (週六整天)「113-157090 Python網路爬蟲進階與Scrapy爬蟲實務班- 113政策性計畫 - 36小時」連結招生簡章
      • 2024/11/13 ~ 2024/12/30 (週六整天)「113-157087 Line Bot聊天機器人結合GhatGPT打造AI聊天機器人實務班- 113政策性計畫 - 42小時」連結招生簡章
      • 2024/11/02 ~ 2024/12/07 (週六整天)「113-157086 Python網路爬蟲實務班 - 113政策性計畫 - 36小時」連結招生簡章
      • 2024/09/30 ~ 2024/11/06 (週一晚、週三晚)「113-157079 Python資料分析及視覺化應用實務班 - 113政策性計畫 - 36小時」連結招生簡章
      • 2024/08/05~2024/09/18 (週一晚、週三晚)「113 - 157066 Python量化分析交易策略整合券商API元件打造程式交易實務班 - 113政策性計畫 - 42小時」連結招生簡章
      • 2024/07/02~2024/08/08 (週二晚、週四晚)「113 - 157055 Python AI程式設計與資料分析應用班 - 113政策性計畫 - 36小時」連結招生簡章
      • 2024/03/03~2024/04/28 (週日整天) 「112 - 150203 Python AI金融數據爬蟲與量化分析應用實務班第01期 - 112政策性計畫 - 54小時」連結招生簡章
    • 實踐大學推廣部
      • 2024/06/30~2024/08/18 (週日整天) 「113 - 157110 AI聊天機器人結合雲端服務應用實務班第01期 - 113政策性計畫 - 48小時」連結招生簡章
      2023年度課程 - 行政院勞動部勞動力發展署北基宜花金馬分署
    • 臺灣職能訓練產業工會 台灣文創訓練中心
      • 2023/12/24~2024/02/18 (週日整天) 「112 - 150406 Python資料科學分析、視覺化呈現與資料庫實務班第01期 - 112年政策性計畫 - 42小時」連結招生簡章
      • 2023/12/21~2024/02/29 (週二晚、週四晚) 「112 -  151819 以Python融合AI ChatGPT打造Line Bot機器人大腦班第01期 - 112年政策性計畫 - 54小時」連結招生簡章
      • 2023/11/20~2024/01/08 (週一晚、週三晚) 「112 - 150407 Python網路爬蟲自動化班第01期 - 112年政策性計畫 - 42小時」連結招生簡章
      • 2023/10/19~2023/12/19 (週二晚、週四晚) 「112 - 151811 以Python融合AI ChatGPT打造Line Bot機器人大腦班第01期 - 112年政策性計畫 - 54小時」連結招生簡章
      • 2023/10/15~2023/12/10 (週日整天) 「112 - 150403 Python大數據金融股票期貨網路爬蟲資料分析實務班第01期 - 112年政策性計畫 - 54小時」連結招生簡章
      • 2023/08/01~2023/09/14 (週二晚、週四晚) 「112 - 150404 Python量化分析交易策略與串接券商API實務班第01期 - 42小時」連結招生簡章
      • 2023/05/14~2023/07/23 (週日整天) 「112 - 149823 Python大數據金融股票期貨網路爬蟲資料分析實務班第01期 - 54小時」 連結招訓簡章
    • 臺灣勞動力服務人員職業工會聯合會
      • 2023/08/30 ~ 2023/11/01 (週三晚) 「112 - 152374 Python網路爬蟲資料處理實務班 - 112年政策性計畫 - 30小時」 連結招訓簡章
      • 2023/04/12 ~ 2023/07/12 (週三晚) 「112 - 147548 Python資料科學分析、視覺化呈現與資料庫班 - 42小時」 連結招訓簡章
    • 文化大學推廣部
      • 2023/12/02~2024/01/27 (週六整天)  「112 - 150201 Line Bot聊天機器人自動化應用實務班 - 112年政策性計畫 - 48小時」連結招生簡章
      • 2023/10/07~2023/11/25 (週六整天) 「112 - 150198 Python大數據資料分析及視覺化呈現數據應用班 - 112年政策性計畫 - 48小時」連結招生簡章
      • 2023/08/06~2023/09/24 (週日整天) 「112 - 150197 Python AI大數據程式設計與資料分析應用班 -  48小時」連結招生簡章
    • 實踐大學推廣部
      • 2023/07/01~2023/08/19 (週六整天) 「112 - 150183Python程式設計與網路爬蟲資料分析應用班第01期 - 48小時」連結招生簡章
      2022年課程 - 行政院勞動部勞動力發展署北基宜花金馬分署
      2021年度課程 - 行政院勞動部勞動力發展署北基宜花金馬分署
      2020年課程 - 行政院勞動部勞動力發展署北基宜花金馬分署
      2019年課程 - 行政院勞動部勞動力發展署北基宜花金馬分署

數位發展部 - AIGO計畫 x 文化大學
  • 2023/06/26 ~ 2023/10/30 「打造AI聊天機器人實務班」連結招訓簡章
  • 「Python 量化金融交易策略與視覺化網頁呈現」招訓簡章
企業內訓
  • 新光銀行「數位關鍵力系列課程 - Excel VBA 超入門實戰」2023/10/20、2023/10/25,連結
大專院校
  • 師大推廣部
    • 「Python網路爬蟲實務班(進階)」2024/06/15 - 2024/09/07 (週六晚),連結
    • 「Python程式設計入門班」2024/07/06~ 2024/08/17 (週六整天),連結
  • 輔大經濟系
    • 經濟系大二「以GitHub打造個人數位履歷與個人網站」2024/06/07、2024/06/14、2024/06/21、2024/06/28,連結
    • 經濟系大二「Line 理財機器人」2024/05/06、2024/05/13、2024/05/20,連結
    • 社會學院「Line 行銷機器人」2024/05/05、2024/05/12、2024/05/19,連結
    • 大二「Excel VBA 網路爬蟲、金融數據與視覺化」2023/02/24、2023/03/03、2023/04/14、2023/04/21 。
    • 大三、四「Python金融數據與視覺化」2022/11/08、2022/11/15、2022/11/22 。
    • 大二「Excel/Excel VBA、Pwer BI整合應用」2022/09/23、2022/10/28、2022/11/11、2022/11/18 。
    •  大二「Excel VBA 網路爬蟲、金融數據與視覺化」2022/04/22、2022/04/29、2022/05/06、2022/05/13。
    • 大三、四「Python金融數據與視覺化」2021/11/162021/11/232021/11/30
    • 大三、四「Python金融大數據爬蟲課」2019/10 。
    • 大三、四「Python抓取金融數據」2018/10 。
    • 大三、四「Python網頁爬蟲」2017/10 。
  • 成大資料分析社
    • 「Excel商業數據分析與Excel VBA爬蟲」2021/11/06 ,部份課程內容影片
  • 東吳巨資系
    • 「Excel VBA爬蟲」2017/12 。
    其他講座
  • Tibame 「Excel VBA智慧選股與股票財報分析」線上直播課程講師,2021/12/26、2022/03/26,連結
  • T客邦「Python 打造 LINE 股市小秘書,建構股票分析系統、擬定專屬交易策略」2019/12,連結
  • iInfo 「Excel VBA 基礎語法班」2019/07,連結
  • T客邦「Excel VBA 爬蟲實戰技巧,分析網站結構擷取資訊、運用VBA+爬蟲打造數據分析工具」2019/07,連結
  • 凱衛資訊「Excel與MultiCharts結合」2017/08 連結、2017/10 連結、2018/03 連結 。

演講與活動
  • 2019/04 天瓏書局「Excel VBA 實戰技巧|金融數據x網路爬蟲」連結
  • 2019/04 高雄科技大學金資系「金融資訊專題講座」。
  • 2018/08 凱基期貨台北總公司「摩台OI與台指對應策略」。
  • 2018/04 群益期貨台北總公司「Python與台股盤後大數據應用」。
  • 2018/02 群益期貨台北總公司「Excel與DDE應用」。
  • 2016/Q2 凱衛資訊MultiCharts網聚講師。
  • 2016/03  iInfo版聚主持人兼講師

證照
  • 電腦軟體應用乙級技術士 (2006年 行政院勞工委員會發)
  • 電腦硬體裝修乙級技術士 (2009年 行政院勞工委員會發)
  • 冷凍空調裝修丙級技術士 (1998年 行政院勞工委員會發)

出版書籍

工作作品
  • 個股基本面分析
  • 個股財報指標比較
個人網路作品

學術作品
  • 研究所論文 2008/08
  • 指導教授:陳倩瑜教授 (現從台大借調 台灣人工智慧實驗室 服務)

    論文題目:使用ab initio結構預測方法建構蛋白質功能區結構模型之研究
    Constructing Structural Model of Protein Functional Domains using ab initio Structure Prediction
    連結:Https://hdl.handle.net/11296/29qskk

關於這個「iInfo 資訊交流」部落格
「iInfo 資訊交流」前身為2008年成立的「iInfo 愛資訊」,主要提供大學生考研究所所需的考情資訊網站,在2012年轉變為程式整合應用網站,希望藉由Python、Excel VBA、MySQL、C/C++、JavaScript、CSS、Batch、C#的程式語言,能在網路上結交各位程式愛好者,一起在投資方面創造出更近一步的應用。

2012年8月28日 星期二

使用xmpp操控Gtalk

下載安裝xmpppy-0.4.0.win32.exe : http://sourceforge.net/projects/xmpppy/files/xmpppy/0.4.0/
開起Python輸入以下程式碼,並修改所需的測試帳號即可開始操控Gtalk
#Python語言: python gtalk機器人
# coding: utf-8
# 這是根據xmpp封裝的Jabber聊天機器人類, 可以通過繼承,重載部分函數來自定義功能.
# Jabber ID(JID): 比如gamcat@gmail.com
import xmpp

class Bot:
    """ Jabber Bot Base Class """
    JID = ''
    PASSWORD = ''

    client = None   

    def __init__ (self, jid, password):
        self.JID = xmpp.JID(jid)
        self.PASSWORD = password

        self.login()

    def login (self):         
        self.client = xmpp.Client(self.JID.getDomain(), debug=[])
        if self.client.connect() == '':
            raise 'JabberBot not connected.'
        if self.client.auth(self.JID.getNode(), self.PASSWORD) == None:
            raise 'JabberBot authentication failed.'
        
        self.client.RegisterHandler('message', self.message_callback)
        self.client.RegisterHandler('presence', self.presence_callback)
        self.client.sendInitPresence()

    def message_callback (self, client, message):
        """ 默認消息回調(可通過繼承自定義) """

    def presence_callback (self, client, message):
        """ 默認事件回調,包括下面幾個(可通過繼承自定義) """
        type = message.getType()
        who = message.getFrom().getStripped()

        if type == 'subscribe':
            self.subscribe(who)
        elif type == 'unsubscribe':
            self.unsubscribe(who)
        elif type == 'subscribed':
            self.subscribed(who)
        elif type == 'unsubscribed':
            self.unsubscribed(who)
        elif type == 'available' or type == None:
            self.available(message)
        elif type == 'unavailable':
            self.unavailable(who)

    def subscribe (self, jid):
        """ 加好友 """
        self.client.send(xmpp.Presence(to=jid, typ='subscribed'))
        self.client.send(xmpp.Presence(to=jid, typ='subscribe'))

    def unsubscribe (self, jid):
        """ 取消好友 """
        self.client.send(xmpp.Presence(to=jid, typ='unsubscribe'))
        self.client.send(xmpp.Presence(to=jid, typ='unsubscribed'))

    def subscribed (self, jid):
        """ 已加 """

    def unsubscribed (self, jid):
        """ 已退 """
        
    def available (self, message):
        """ 上線 """

    def unavailable (self, jid):
        """ 下線 """

    def send (self, jid, message):
        """ 發消息給某人"""
        self.client.send(xmpp.protocol.Message(jid, message))

    def step (self):
        """ 用在迴圈中 """
        try:
            self.client.Process(1)
        except KeyboardInterrupt:   # Ctrl+C停止
            return False
        return True

#===========================
# 測試
#===========================
class Bot(Bot):
    def message_callback (self, cl, msg):
        fromid = msg.getFrom().getStripped()
        cont = msg.getBody()
        self.send2admin(msg)

    def send2admin (self, message):
        self.send('admin@gmail.com', 'Test')

if __name__ == '__main__':
    gb = Bot ('yourbot@gmail.com', '******')
    gb.send2admin ('Bot Started')

    # 開始運行
    while (gb.step()): pass

程式碼來源 : Python Gtalk機器人

使用pyxmpp操控Gtalk


搭配以下Python程式碼,即可對Gtalk發送訊息
#!/usr/bin/python
# -*- coding: utf-8 -*-

from pyxmpp.jid import JID
from pyxmpp.message import Message
from pyxmpp.jabber.client import JabberClient
from pyxmpp.jabber.simple import send_message
from pyxmpp import streamtls

class Gtalk():
    def __init__(self, sid, spwd):
        self.sid = JID(sid)
        self.spwd = spwd

    def send_msg(self, rid,  msg):
        self.rid = JID(rid)
        if not self.sid.resource:
            self.sid = JID(self.sid.node, self.sid.domain, 'send_message')

        msg = Message(to_jid=self.rid, body=msg)
        def send(stream):
            stream.send(msg)

        self.xmpp_do(send)

    def xmpp_do(self, function):
        class Client(JabberClient):
            def session_started(self):
                function(self.stream)
                self.disconnect()

        tls = streamtls.TLSSettings(require=True, verify_peer=False)
        auth = ['sasl:PLAIN']
        gtalkClient = Client(self.sid, self.spwd, tls_settings=tls, auth_methods=auth)
        gtalkClient.connect()
        try:
            gtalkClient.loop(1)
        except KeyboardInterrupt:
            print u'disconnecting...'
            gtalkClient.disconnect()

if __name__ == '__main__':
    g = Gtalk('account@gmail.com', u'password')
    g.send_msg('to@gmail.com', 'Hello World')

程式碼來源 : 比較win32下python與java通過實現XMPP協定發送gtalk消息

2012年8月27日 星期一

在windows安裝pyxmpp,架設gtalk機器人

Google Talk是在geek中相當流行的一款IM用戶端,其採用了jabber的開放式協議xmpp,使得第三方開發非常方便。

jabber.py早已經被廢棄,不推薦
xmpppy是jabber.py的繼承者,使用方便簡單,有彩色debug輸出(如果你的shell支援彩色的話)
xmpppy適合羽量級的開發,不需要依賴其他python庫
pyxmpp是最符合XMPP和jabber協議的庫,作者本身就是Jabber標準組的成員之一
pyxmpp的安裝比xmpppy麻煩的多。需要libxml2、dnspython和M2Crypto,可惜不支持Win32

以下將介紹如何在windows下安裝pyxmpp環境

1. 下載安裝Python 2.7.3 : http://www.python.org/download/releases/2.7.3/
2. 下載安裝M2Crypto-0.20.2.win32-py2.7.exe : http://chandlerproject.org/Projects/MeTooCrypto#Downloads
3. 下載安裝dnspython-1.6.0.win32.exe : http://www.dnspython.org/kits/1.6.0/
4. 下載安裝libXML2 : http://xmlsoft.org/sources/win32/python/
5. 下載pyxmpp-1.1.2.tar.gz : https://github.com/Jajcus/pyxmpp/downloads/  (一定使用這裏這裡的安裝)
6. 將pyxmpp-1.1.2.tar.gz 解壓縮至C:\Python27\Lib中
7. 開啟命令提示字元,將操作目錄切換至C:\Python27\Lib\pyxmpp-1.1.2中 : "cd C:\Python27\Lib\pyxmpp-1.1.2"
8. 確認安裝pyxmpp所需的安裝資料庫與程式 : 輸入"configure.py" 執行
9. 建立pyxmpp安裝檔 : 輸入"python setup.py build" 執行
10. 開始安裝pyxmpp : 輸入"python setup.py install" 執行

2012年8月26日 星期日

Python與Excel連結的模組

在一次網路收尋資料中,發現了兩個可以透過python操作excel的簡單模組,分別是pyxll、openpyxl。代我先了解如何使用後,再將範例清楚的貼在文章上

2012年8月25日 星期六

Excel VBA使用正規化取得字串內容

一次的意外發現,原來VBA中也可以使用Regular Expression,以下使用個範例來幾單說明使用,後續再補充完整的內容
Option Explicit

Private Sub TestReg()
    Dim reg As Object
    Dim mc As Object
    Dim m As Object
    
    Set reg = CreateObject("vbscript.regExp")
    With reg
        .Global = True
        .IgnoreCase = True
        .Pattern = "\d+"
    End With

    Set mc = reg.Execute("123aaaaa987uiiui999")
    For Each m In mc
        MsgBox m.Value
    Next
End Sub

2012年8月23日 星期四

Excel VBA抓yahoo finance各項歷史成交資訊


歷史資料工作表中加入一個名為"下載"按鈕,如上圖中粉紅色按鈕,加入以下的程式碼
Option Explicit
Private Sub 歷史成交資訊_Click()
    Dim xlStockid As String, URL As String
    xlStockid = Range("B1")
    UsedRange.Offset(4).Clear
    URL = "http://ichart.finance.yahoo.com/table.csv?s=" & xlStockid & "&a=00&b=1&c=1998&d=" & Format(Month(Date) - 1, "00") & "&e=" & Day(Date) & "&f=" & Format(Year(Date), "0000") & "&g=d&ignore=.csv"
    
    With Workbooks.Open(URL)
        .Sheets(1).UsedRange.Offset(1).Copy [a5]
        .Close 0
    End With
End Sub

想要取得上市股票的歷史成交資訊,股票代碼請輸入".TW",如台泥 1101.TW
想要取得上櫃股票的歷史成交資訊,股票代碼 請輸入".TWO",如新普 6121.TWO
以上要注意有點"."的部份

各類指數名稱
對應代碼
美元兌台幣的歷史
USDTWD=x
台灣證交所

加權指數
^TWII
不含金融股
^TIWI
金融保險類
^TFNI
大陸

深圳綜合
^SZSC
深圳成份
^SZSC1
A股指數
^SZSA
A股成份
^SZSA1
B股指數
^SZSB
B股成份
^SZSB1
綜合指數
^SSEC
A股指數
^SSEA
B股指數
^SSEB
工業指數
^SSEI
商業指數
^SSEM
地產指數
^SSEP
公用事業
^SSEU
香港證交所

恆生指數
^HSI
金融指數
^HSNF
公用事業指數
^HSNU
地產指數
^HSNP
工商指數
^HSNC
中國企業指數
^HSCE
中資企業指數
^HSCC
亞太地區

中國 上海綜合指數
000001.SS
香港 恆生指數
^HSI
日本 Nikkei 225
^N225
新加坡 海峽時報指數
^STI
南韓 漢城綜合指數
^KS11
印度 BSE 30
^BSESN
印尼 雅加達指數
^JKSE
馬來西亞 KLSE Composite
^KLSE
澳洲 All Ordinaries
^AORD
菲律賓 PSE Composite
^PSI
斯里蘭卡 All Share
^CSE
歐洲

奧地利 ATX
^ATX
法國 CAC 40
^FCHI
德國
^GDAX
英國 FTSE 100
^FTSE
非洲/中東

埃及 CMA
^CCSI
以色列 TA-100
^TA100


2012年8月21日 星期二

Excel VBA抓取網頁數據的方法


目前在檯面上可以透過Excel VBA取的網頁數據的方法有以下5種,至於每項的說明與範例,後續再陸續補充說明

舉凡網站有提供CSV檔案下載服務,即可使用Workbook物件對遠端檔案進行檔案操作以達取得網頁數據存取。
如 Excel VBA抓yahoo finance各項歷史成交資訊

舉凡網站或資料庫的數據以表格或檔案形式提供,皆可使用WebQuery方法取得網頁列表數據。
Excel VBA抓取股票資料Excel VBA抓取上市交易明細Excel VBA抓取股票代碼Excel VBA抓每月營收Excel VBA抓特定股票合併營收Excel VBA抓取股票資料

舉凡網站需要藉由手動輸入或是點擊來達成進行網頁的操控,即可使用Internet Explorer物件控制DOM,使用這個方式需要熟悉網頁基本標籤。
Excel VBA抓取上市交易明細

Internet Explorer物件控制網頁下載資料。
如 Excel VBA 針對 js的資料網頁無法抓取的解法使用Internet Explorer object下載每日上櫃交易明細

舉凡抓取數據會需要用到編碼(如UTF8、BIG5)、網站內部參數傳遞(GetPOST)、檔案下載,皆可使用XmlHttp取得網頁表格數據。
Excel VBA抓元大寶來100Excel VBA抓取上櫃交易明細

Webbrowser操作網頁,尚在研究中

MSXML處理XML檔案,在Excel VBA中不適用

Excel VBA抓特定股票合併營收



2012年8月19日 星期日

Excel VBA抓元大寶來100網頁


近期處理一個想透過VBA抓取網頁表格數據的問題,http://www.p-shares.com/0051-4-1-1.asp 該網頁屬於元大寶來投信的網頁,網頁會亂碼的原因,可能受到網頁第8行word.css的影響,不過這還要再確認才知道。


當然各位可以將網頁的編碼設為UTF-8,即可見到正常的網頁資訊,不過這還不是最頭痛的問題,我在猜這個網頁撰寫人很喜歡用換行符號”\r\n”(就是DOS/Windows的換行0D0A),所以在表格數據每個欄位都加入換行符號,導致無法使用Trim函數,相對的這也考驗程式開發者的敏感度與對文件的熟析程度。


透過 Fiddler 工具抓出從網頁抓下來在Memory的中所呈現的16進制的數據,以下將網頁表格數據中的其中一個欄位節錄出來,如下紅色框框即是網頁資料的真實數據。


基於以上的分析再透過VBA的語法,即可取得亂碼資料的問題。

Option Explicit

Sub 寶來100()
    Dim oXMLHTTP As Object
    Dim objStream As Object
    Dim i As Integer, j As Integer, Rowstart As Integer
    Dim Webbadydata() As String, Webheader() As String, WebPageData As String
    Dim tmep As String
        
    '設定XMLHTTP與ADODB物件
    Set oXMLHTTP = CreateObject("Msxml2.XMLHTTP")
    Set objStream = CreateObject("ADODB.Stream")
    
    '使用UTF8,取得網頁資料
    With oXMLHTTP
        .Open "GET", "http://www.p-shares.com/0051-4-1-1.asp", False
        .setRequestHeader "Content-type", "application/x-www-form-urlencoded"
        .send
        If .Status = 200 Then               '網頁請求成功
            With objStream
                .Open
                .WriteText oXMLHTTP.ResponseBody
                .Position = 0               '從頭開始
                .Type = 2                   '以文字模式操作(adTypeText),用以text/ntext欄位保存純文本資料,另有二進位方式操作adTypeBinary
                .Charset = "Big5"          'UTF-8編碼(近期網頁有修改,請以Big5編碼)
                WebPageData = .ReadText     '取得主要資料欄位
                .Close
            End With
        Else
            MsgBox "無法取得資料"
        End If
        '釋放資源
        Set objStream = Nothing
    End With
    
    '釋放資源
    Set oXMLHTTP = Nothing

    MsgBox WebPageData
    Sheets("Sheet1").Select
    Webheader = Split(WebPageData, "<th class=""" & "word12" & """>") '取得header說明
    For i = 1 To UBound(Webheader)
        Cells(1, i) = Trim(Split(Mid(Webheader(i), 3, Len(Webheader(i))), "</th>")(0)) '先去除\r\n,再去除空白
    Next
    
    '對不需要資料先做刪除
    Webbadydata = Split(WebPageData, "<tr align=" & """center""" & " bgcolor=" & """#DDE4EE""" & " class=" & """word""" & ">") '去頭
    Webbadydata = Split(Webbadydata(1), "<tr align=" & """center""" & " bgcolor=" & """#E4DFFF""" & ">") '去尾
    Webbadydata = Split(Webbadydata(0), "<td>") '開始取值
    
    Rowstart = 2
    For i = 1 To UBound(Webbadydata) Step 3
        For j = 0 To 2
            tmep = Trim(Mid(Webbadydata(i + j), 3, Len(Webbadydata(i + j)))) '對0D0A進行刪除並去除空白
            Cells(Rowstart, j + 1) = Trim(StrReverse(Mid(StrReverse(Trim(Split(tmep, "</td>")(0))), 3, Len(StrReverse(Trim(Split(tmep, "</td>")(0))))))) '對0D0A進行刪除並去除空白
        Next
        Rowstart = Rowstart + 1
    Next
End Sub