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

閱讀時間約 6 分鐘
上一篇我們已經介紹過Google Colab的基本用法,建議可以先行閱讀「【Google Colab Python系列】Colab平台與Python如何擦出火花?」,進行基本概念與環境的建置再進行下一步會比較容易進行學習。
雖然網路上已經提供非常多的股市資訊,但各個網站可能都零零散散,難免我們得自行進行資訊整合來抓取網頁資料進行分析,而Python語言的特性就是早期具有非常多的資料科學家使用的一門語言,故統計、分析、資料解析的套件非常多,我們只要採用幾個重要的套件就能夠快速的抓取我們需要的資料進行分析。
這次主要介紹兩個重要的套件,分別是「BeautifulSoap」與「Pandas」,這兩個工具主要瞄準的目標不太相同,「BeautifulSoap」主要針對HTML、XML格式進行解析,讓我們可以更快的抓到我們需要的資料,等於是幫我們進行第一道關卡的過濾,而第二道關卡資料分析的過程就需要透過「Pandas」來幫我們進行了,就相當於資料 → 資訊 → 知識的轉化過程。

撒網目標: Goodinfo!

我們已經很確定要抓取的網頁資訊就是在「經營績效」這個頁面,因此第一步就是先進到這個畫面之後,將網址複製起來。
我們得到網址之後,首先就要先設法將網頁內容抓取,我們可以用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來判定為機器人或者瀏覽器行為,此時我們來觀察一下瀏覽器操作的行為,並試圖模擬一下。
回到頁面,我們按下F12打開瀏覽器開發者工具列,切到Network,接著按下頁面重新整理之後,蒐集目前頁面網路傳輸資訊。
接著在Headers裡面找到user-agent欄位並複製起來。
接著我們回到Colab進行程式開發,將headers帶入。
headers = {
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36'
}
res = requests.get('<https://goodinfo.tw/tw/StockBzPerformance.asp?STOCK_ID=3231>', headers = headers)
此時執行後我們就能夠成功抓到內容囉!

網頁解析的利器: BeautifulSoap

首先我們一樣開始F12開發者工具,並且點選左下角的「Select an element…」來獲取指定區塊,今天我們抓取的目標是獲利指標,因此就將滑鼠移到該區塊。
接著我們回到Colab撰寫程式抓取目標值。
from bs4 import BeautifulSoup
bs = BeautifulSoup(res.text, 'html.parser')
data = bs.select_one('#tblDetail')
成功抓到區塊資料如下:

資料分析的利器: Pandas

成功抓取資料之後,由於我們的目標區塊是表格,而Pandas正好非常擅長處理表格資料,因此我們可以將目標資料丟給Pandas進行分析處理。
import pandas
dfs = pandas.read_html(data.prettify())
node = dfs[0]
print(node)
成功抓取目標節點。
接著我們可以透過.head()的方式來瀏覽資料集。
下一個章節我們再來介紹如何取得我們要的EPS、殖利率…等關鍵指標進行程式運算,看到此篇文章的你不妨動手試試看,相信成功之後會非常有成就感,才能有信心往下一道關卡邁進。

結語

Python不愧是進行資料分析的最佳利器,簡單的透過幾個套件就能夠快取爬取我們要的網站資料,並且進一步進行資料統計與分析,難怪資料科學家們都喜愛這套程式語言,我們也要跟上趨勢學習如何抓取、過濾、分析資料,善用各式工具幫助我們提升效率。
為什麼會拿來分析股市資訊呢? 起心動念主要源自於市面上太多各式各樣的APP,但這些APP都有一些共同點,就是進階功能皆需收費,對於小資族來說也是一筆不小的負擔啊! 因此我們既然已經有工具及觀念,何不自行打造專屬的資料分析器呢?
今天的範例都在這裡「📦 goodinfo_example.ipynb」歡迎自行取用。
------------------------------------------------------------------------------------------------
喜歡撰寫文章的你,不妨來了解一下:
歡迎加入一起練習寫作,賺取知識!
為什麼會看到廣告
116會員
257內容數
哈囉,我是阿Han,是一位 👩‍💻 軟體研發工程師,喜歡閱讀、學習、撰寫文章及教學,擅長以圖代文,化繁為簡,除了幫助自己釐清思路之外,也希望藉由圖解的方式幫助大家共同學習,甚至手把手帶您設計出高品質的軟體產品。
留言0
查看全部
發表第一個留言支持創作者!
阿Han的沙龍 的其他內容
這次的主題除了結合平時興趣之一的金融理財之外,亦將本業的軟體程式概念進行結合,透過跨領域的想法激盪出屬於自己的交易策略,過程中也將學習歷程進行筆記,提供給路途中的朋友一個方向,讓我們一起動動手打造出自己的分析程式吧! 多年的軟體開發經驗,過程中也踩過不少雷,因此常常在學習道路上都期望有人能夠將技術經
一般來說我們會這樣定義Struct來接收前端請求的POST Body 那假設POST Body是這樣 此時我們利用gin的BindJSON來Unmarshal 結果印出來會是 上述結果的name被我們過濾掉是正常,但enabled就我們的需求上來看,不應該被過濾掉才對。 所以我們應該將bool、in
由於Go語言本身沒有提供Enum的功能, 故我們可以使用package及type的技巧來達到類似的功能,假設今天要定義季節的enum型別, 包含了「春、夏、秋、冬」四種值的時候,可以怎麼做呢? 首先我們可以用package來框住season的範圍: 然而在season.go可以定義一個字串的類型 最
我們開發程式的過程中難免會依賴DB或其他服務, 但複雜的網路環境下我們並沒有辦法確保我們發送的請求是否正確的送達, 因此我們可以在程式中加入Retry機制, 提升我們軟體的強健性。 尤其是面對NoSQL相對弱一致性的DB時更需注意, 而在Go語言, 我們可以用簡單的技巧來完成Retry的策略, 在進
一般來說我們如果將程式運行在console上,只要用ctrl + c 之類的強制中斷方式就能讓程式中止,但如果我們想要在程式運行到一半時,偵測到某些例外狀況就離開程式,可以怎麼做呢? nodejs核心模組提供了process.exit()的方法可以讓程式強制中止,但使用了這個功能之後,我們尚未完成的
由於Javascript本身設計就適合於單線程的應用, 但一般後端應用程式都會支援多個服務來處理client的請求, nodejs中也提供了cluster模組來達成此功能。 Cluster的原理很簡單,由於每個Process都只能用單核心的CPU來運行,那麼就多開幾個來幫忙處理吧! 而這個Clust
這次的主題除了結合平時興趣之一的金融理財之外,亦將本業的軟體程式概念進行結合,透過跨領域的想法激盪出屬於自己的交易策略,過程中也將學習歷程進行筆記,提供給路途中的朋友一個方向,讓我們一起動動手打造出自己的分析程式吧! 多年的軟體開發經驗,過程中也踩過不少雷,因此常常在學習道路上都期望有人能夠將技術經
一般來說我們會這樣定義Struct來接收前端請求的POST Body 那假設POST Body是這樣 此時我們利用gin的BindJSON來Unmarshal 結果印出來會是 上述結果的name被我們過濾掉是正常,但enabled就我們的需求上來看,不應該被過濾掉才對。 所以我們應該將bool、in
由於Go語言本身沒有提供Enum的功能, 故我們可以使用package及type的技巧來達到類似的功能,假設今天要定義季節的enum型別, 包含了「春、夏、秋、冬」四種值的時候,可以怎麼做呢? 首先我們可以用package來框住season的範圍: 然而在season.go可以定義一個字串的類型 最
我們開發程式的過程中難免會依賴DB或其他服務, 但複雜的網路環境下我們並沒有辦法確保我們發送的請求是否正確的送達, 因此我們可以在程式中加入Retry機制, 提升我們軟體的強健性。 尤其是面對NoSQL相對弱一致性的DB時更需注意, 而在Go語言, 我們可以用簡單的技巧來完成Retry的策略, 在進
一般來說我們如果將程式運行在console上,只要用ctrl + c 之類的強制中斷方式就能讓程式中止,但如果我們想要在程式運行到一半時,偵測到某些例外狀況就離開程式,可以怎麼做呢? nodejs核心模組提供了process.exit()的方法可以讓程式強制中止,但使用了這個功能之後,我們尚未完成的
由於Javascript本身設計就適合於單線程的應用, 但一般後端應用程式都會支援多個服務來處理client的請求, nodejs中也提供了cluster模組來達成此功能。 Cluster的原理很簡單,由於每個Process都只能用單核心的CPU來運行,那麼就多開幾個來幫忙處理吧! 而這個Clust
你可能也想看
Google News 追蹤
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
11/20日NVDA即將公布最新一期的財報, 今天Sell Side的分析師, 開始調高目標價, 市場的股價也開始反應, 未來一週NVDA將重新回到美股市場的焦點, 今天我們要分析NVDA Sell Side怎麼看待這次NVDA的財報預測, 以及實際上Buy Side的倉位及操作, 從
Thumbnail
Hi 大家好,我是Ethan😊 相近大家都知道保濕是皮膚保養中最基本,也是最重要的一步。無論是在畫室裡長時間對著畫布,還是在旅途中面對各種氣候變化,保持皮膚的水分平衡對我來說至關重要。保濕化妝水不僅能迅速為皮膚補水,還能提升後續保養品的吸收效率。 曾經,我的保養程序簡單到只包括清潔和隨意上乳液
Thumbnail
本文深入探討Google關鍵字廣告的運作原理、不同模式及應用策略,幫助企業精準觸達目標受眾,提升品牌曝光和轉換率。
Thumbnail
本文提供如何使用 Google Colab 結合 Faster Whisper 來提升語音辨識速度與準確性,包含安裝指南與使用方法。探索如何將語音轉換為文本,並對檔案進行不同格式的輸出。
Thumbnail
本篇筆記了如何使用Google Colab和OpenAI的Whisper Large V3進行免費且開源的語音辨識。涵蓋從基礎設定到實際運用的步驟,適合初學者和技術愛好者輕鬆學習語音辨識技術。
Thumbnail
Google Colab是一個基於雲端的Python開發環境,提供免費的CPU和GPU資源,讓用戶可以在網頁瀏覽器中運行和編寫Python程式。它具有強大的協作功能,可以與他人共享和編輯程式碼。Google Colab支援Jupyter筆記本,並提供預裝的Python套件,方便進行數據分析、機器學習
作者:MTMG SEO 權重評分指標增加『經驗』 相信很多seo專家都熟悉了E-A-T的概念,這是一個用於評估搜尋引擎是否提供有用和相關數據的系統。但一般人真的會覺得到他們在Google搜尋出來的結果真的是值得信賴的嗎? 如果你是一個非常注重提升自然流量的企業品牌,那你一定要了解接下來文章中介紹的G
Thumbnail
圖1,圖片引用自pexels 2021/07月第三篇付費訂閱文 大綱 1.製作始於自己的投資組合表需要哪些東西? 2.如何抓取上市、上櫃公司股價資訊,有哪些項目可以用? 這系列是付費訂閱文,後面還會有的內容有,有興趣的朋友可以參考,是以完全對google sheet 新手從0開始的基礎教學,每篇教
Thumbnail
上次小K向大家介紹了Google Ads是甚麼,亦了解了我們可以如何透過投放廣告來提升我們的曝光率,這次小K便想教大家一個既可以節省成本,又可以宣傳自己的方法,在Google Ads裡面投放廣告的時候,我們首先需要申請一個Google Ads的帳號,如果你本來已經有Google帳號的話,那麼你就可以
Thumbnail
簡介 前陣子,Google實驗室Area120釋出了一個「製作遊戲」的遊戲,名字也很簡單就叫「Game Builder」。主要的用戶是video game的編導,方便他們以拖拉卡片的型式來開發遊戲,做一個game play的驗證用…
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
11/20日NVDA即將公布最新一期的財報, 今天Sell Side的分析師, 開始調高目標價, 市場的股價也開始反應, 未來一週NVDA將重新回到美股市場的焦點, 今天我們要分析NVDA Sell Side怎麼看待這次NVDA的財報預測, 以及實際上Buy Side的倉位及操作, 從
Thumbnail
Hi 大家好,我是Ethan😊 相近大家都知道保濕是皮膚保養中最基本,也是最重要的一步。無論是在畫室裡長時間對著畫布,還是在旅途中面對各種氣候變化,保持皮膚的水分平衡對我來說至關重要。保濕化妝水不僅能迅速為皮膚補水,還能提升後續保養品的吸收效率。 曾經,我的保養程序簡單到只包括清潔和隨意上乳液
Thumbnail
本文深入探討Google關鍵字廣告的運作原理、不同模式及應用策略,幫助企業精準觸達目標受眾,提升品牌曝光和轉換率。
Thumbnail
本文提供如何使用 Google Colab 結合 Faster Whisper 來提升語音辨識速度與準確性,包含安裝指南與使用方法。探索如何將語音轉換為文本,並對檔案進行不同格式的輸出。
Thumbnail
本篇筆記了如何使用Google Colab和OpenAI的Whisper Large V3進行免費且開源的語音辨識。涵蓋從基礎設定到實際運用的步驟,適合初學者和技術愛好者輕鬆學習語音辨識技術。
Thumbnail
Google Colab是一個基於雲端的Python開發環境,提供免費的CPU和GPU資源,讓用戶可以在網頁瀏覽器中運行和編寫Python程式。它具有強大的協作功能,可以與他人共享和編輯程式碼。Google Colab支援Jupyter筆記本,並提供預裝的Python套件,方便進行數據分析、機器學習
作者:MTMG SEO 權重評分指標增加『經驗』 相信很多seo專家都熟悉了E-A-T的概念,這是一個用於評估搜尋引擎是否提供有用和相關數據的系統。但一般人真的會覺得到他們在Google搜尋出來的結果真的是值得信賴的嗎? 如果你是一個非常注重提升自然流量的企業品牌,那你一定要了解接下來文章中介紹的G
Thumbnail
圖1,圖片引用自pexels 2021/07月第三篇付費訂閱文 大綱 1.製作始於自己的投資組合表需要哪些東西? 2.如何抓取上市、上櫃公司股價資訊,有哪些項目可以用? 這系列是付費訂閱文,後面還會有的內容有,有興趣的朋友可以參考,是以完全對google sheet 新手從0開始的基礎教學,每篇教
Thumbnail
上次小K向大家介紹了Google Ads是甚麼,亦了解了我們可以如何透過投放廣告來提升我們的曝光率,這次小K便想教大家一個既可以節省成本,又可以宣傳自己的方法,在Google Ads裡面投放廣告的時候,我們首先需要申請一個Google Ads的帳號,如果你本來已經有Google帳號的話,那麼你就可以
Thumbnail
簡介 前陣子,Google實驗室Area120釋出了一個「製作遊戲」的遊戲,名字也很簡單就叫「Game Builder」。主要的用戶是video game的編導,方便他們以拖拉卡片的型式來開發遊戲,做一個game play的驗證用…