跳到主要內容

發表文章

目前顯示的是 11月, 2022的文章

【Google Colab系列】該如何設計自己的爬蟲來抓取Html資料?

  上一篇我們已經介紹過Google Colab的基本用法,建議可以先行閱讀「 【Google Colab系列】台股分析預備式: Colab平台與Python如何擦出火花? 」,進行基本概念與環境的建置再進行下一步會比較容易進行學習。 雖然網路上已經提供非常多的股市資訊,但各個網站可能都零零散散,難免我們得自行進行資訊整合來抓取網頁資料進行分析,而Python語言的特性就是早期具有非常多的資料科學家使用的一門語言,故統計、分析、資料解析的套件非常多,我們只要採用幾個重要的套件就能夠快速的抓取我們需要的資料進行分析。 這次主要介紹兩個重要的套件,分別是「BeautifulSoap」與「Pandas」,這兩個工具主要瞄準的目標不太相同,「BeautifulSoap」主要針對HTML、XML格式進行解析,讓我們可以更快的抓到我們需要的資料,等於是幫我們進行第一道關卡的過濾,而第二道關卡資料分析的過程就需要透過「Pandas」來幫我們進行了,就相當於資料 → 資訊 → 知識的轉化過程。 圖片來源 撒網目標: Goodinfo! - https://goodinfo.tw/tw/index.asp - 某一檔個股的經營績效指標。 我們已經很確定要抓取的網頁資訊就是在「經營績效」這個頁面,因此第一步就是先進到這個畫面之後,將網址複製起來。 圖片來源 得到網址為: https://goodinfo.tw/tw/StockBzPerformance.asp?STOCK_ID=3231 我們得到網址之後,首先就要先設法將網頁內容抓取,我們可以用Python內建的request套件去請求目標網址。 import requests res = requests.get('https://goodinfo.tw/tw/StockBzPerformance.asp?STOCK_ID=3231', headers = headers) res.encoding = 'utf-8' res.text 但非常不幸的第一步將遇到一個狀況就是我們被誤以為機器人,因此沒辦法請求任何資訊了! 圖片來源 怎麼辦呢? 主要是許多網站都會檢查header是否為user-agent來判定為機器人或者瀏覽器行為,此時我們來觀察一下瀏覽器操作的行為,並試圖模

【Google Colab系列】台股分析預備式: Colab平台與Python如何擦出火花?

  圖片來源 這次的主題除了結合平時興趣之一的金融理財之外,亦將本業的軟體程式概念進行結合,透過跨領域的想法激盪出屬於自己的交易策略,過程中也將學習歷程進行筆記,提供給路途中的朋友一個方向,讓我們一起動動手打造出自己的分析程式吧! 多年的軟體開發經驗,過程中也踩過不少雷,因此常常在學習道路上都期望有人能夠將技術經驗進行分享,讓我們能夠少走一些彎路,而作者本身也有這樣的願景在,希望幫助後進者能夠減少阻礙,一同加入未來的趨勢,每一字每一句都是肺腑之言,本身也非常能夠理解初學者的難處在哪,故而在撰寫教材文章的時候,都會由淺入深的循序漸進,幫助一個沒有任何基礎經驗的朋友較無痛的加入,而這次選擇的技術平台就非常適合初學者,相信只要我們努力踏實的踏出每一步,就能夠掌握到寶貴的知識庫。 接下來的教學系列非常精彩,有興趣的朋友歡迎隨時關注與討論,讓我們一起學習成長,創造屬於自己的財富吧! 進入主題之前先來談談為什麼選擇Google Colab這個平台來進行使用呢? 主要有以下幾個特點。 圖片來源 看到以上的特點其實只是冰山一角而已,相信技術同好者們應該都已經熱血沸騰了吧! 廢話不多說,我們就來實際使用一下Google Colab這套雲端開發軟體,讓我們奠定程式交易的基礎,共創未來財富吧! 起手式: 開啟記事本進行第一式 我們先進到Google Colab的首頁: https://colab.research.google.com/ 一進入首頁如果已經登入Google帳號的朋友,會看到導引列,請我們建立一個筆記本,這就是一個非常簡單的開端,請按下「新增記事本」吧! 圖片來源 新增完畢後會被導引到編輯頁面,就如同我們在編輯文章一樣,開始撰寫我們的草稿並準備測試及發佈吧! 圖片來源 練功蹲馬步: 美好開端穩一步 我們就以程式入門最簡單的Hello World進行示範,讓一段程式碼實際執行並印出結果。 我們用Python語言的內建關鍵字「Print」印出期望資訊如下: Print("Hello World") 圖片來源 我們可以在程式碼執行區塊下一行看到預期結果,使用Colab最大的好處在於每一段程式碼都可以是一個獨立的區塊,如此一來假設我們每一段都撰寫非常詳細的註解說明,相信對於入門者來說就非常容易的進入到這個領域,也是Google Colab發展的主要宗旨,透過教學

【開發智能合約 - Solidity系列】實作篇Ep.16 - 匯入模組拚積木(Import)

  一套大型的智能合約通常都會拆分成許多小合約,並且透過匯入的方式拼裝而成,而這樣的匯入在Solidity世界中就是「Import」,就讓我們來看看「Import」到底怎麼運用吧! 基本的相對路徑匯入方式 假設目錄結構如下 example.sol other.sol 我們引入的方式就會是: import './other.sol' 也可以遠端匯入 import 'https://example.com/xxx.sol' 彈性的自訂名稱功能 當衝突發生時 當我們使用import時,預設會採用外部模組定義好的方法名稱,但這樣很容易發生衝突,假設外部有一個方法定義為「add()」,但內部也定義成相同名稱的方法時,會發生「DeclarationError」的錯誤,示範如下: external.sol // SPDX-License-Identifier: MIT pragma solidity ^0.8.7.0; function add(uint x, uint y) pure returns (uint) { return x + y; } example.sol // SPDX-License-Identifier: MIT pragma solidity ^0.8.7.0; import {add} from "./external.sol"; contract Example { function add(uint x, uint y) public pure returns (uint) { return x + y; } } 發生的錯誤如下: 如何補救呢? solidity也跟javascript一樣提供別名的方式,為外部的衝突方法特定一個內部名稱,避免與內部相互衝突,import的方式如下: import {add as extAdd } from "./external.sol"; 結語 這次介紹的import對於模組化非常的有幫助,尤其是分工協作的開發模式下,將需要的模組、功能規劃完畢之後就能夠各自進行開發,並且最終統一彙整,以拼裝積木的方式將各個功能模組兜在一起就能完成一份更加完整的智能合約,也讓合約的內容更加清晰,不會過於複