【筆記】BeautifulSoup 4 實作:環境架設跟基本架構

更新於 發佈於 閱讀時間約 4 分鐘
BeautifulSoup 4 是一個Python的模組,用來解析HTML和XML的文本,並將內容轉換成Python可作用的對象,我們以HTML為對象來獲取需要的資訊,先從頁面上的值抓起。

要使用Beautiful Soup 4,得先安裝套件,打開終端機:

pip install beautifulsoup4

安裝完畢後在編譯器上導入套件,多數情況下,會跟requests一起用:

from bs4 import BeautifulSoup
import requests​


用requests從網站獲取網頁內容,再使用BeautifulSoup解析HTML的內容,就是俗稱的網路爬蟲,可以根據自身的需要解析一段數據或是整頁網頁的內容,至於可以解析哪些內容,這個就牽扯到HTML結構了,根據個人非常不完整且粗略的理解,大致上長下面這樣:

raw-image

有一個分層的概念,會比較知道需要解析什麼內容。


身為一個數字貨幣交易所的員工,最常使用的數字貨幣就是USDT了,它是美元的穩定幣,跟美元匯率的掛鉤,於是想做一段程式知道各交易所的USDT/TWD跟銀行美元兌台幣的價格,可以抓到價格的方法有三種:

  1. 打API,但這個需要看該網站有沒有開放API,如果沒有或是需要比較繁瑣的註冊的話,就會比較麻煩一點,好處是打API比較穩定,不會因為網站頁面改版需要重抓元素。
  2. 用Selenium webdriver無頭模式抓價格欄位的價格,但這種方式會需要啟動瀏覽器,即便是無頭瀏覽器還是會彈一下。
  3. 用BeautifulSoup爬,透過requests網站內容,再進行解析,獲取我們要的資訊,這個就是本篇要做的事情了。


首先我們要獲取網頁的HTML內容:

# 台灣銀行牌告匯率網頁
url = "https://rate.bot.com.tw/xrt?Lang=zh-TW"
# 定義一個變數為response,它是使用requests套件的get函式,對指定的url發起請求。
response = requests.get(url)
# 將回應內容轉換為純文字
html_doc = response.text

透過BeautifulSoup解析:

soup = BeautifulSoup(html_doc, "html.parser")

BeautifulSoup的( )內:

第一格參數是放要解析的對象,可以是HTML字符串、存放在電腦中的HTML檔案以及網頁請求的回應內容,這裡我們填上html_doc。

第二格是填解析器,可填可不填,不填會使用標準函式庫預設的"html.parser",程式碼可以執行但會跳提示,所以還是填上吧。

除了"html.parser"這個解析方法以外,還有"lxml"跟"html5lib":

lxml,執行效率快的解析器,可以快速解析 HTML 和 XML 文本,如果要使用的話需要先安裝相應的函式庫。

pip install lxml


html5lib,可以處理不完整或是複雜的HTML,容錯率比較高,但速度比較慢,也需要安裝相應的函式庫。

pip install html5lib


接著我們透過解析出來的內容找到要的欄位:

#定義變數為element,它從解析好的文件中找符合字典中兩個屬性的td
element = soup.find("td", {"data-table": "本行即期賣出", "class": "rate-content-sight"})


提取出數字:

#從element中取得文字內容,並且字串化,透過​strip去除空格、換行
number = element.text.strip()


接著把內容印出來:

#將{number}變數字串化​
print(f"台灣銀行 的USD/TWD匯率:{number}")


結果:

raw-image


avatar-img
21會員
18內容數
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
冬霞的沙龍 的其他內容
使用顯性等待,以及讓我們的自動化網頁看起來有像測試的樣子 另外,readmoo電子書真的很方便啊
使用顯性等待,以及讓我們的自動化網頁看起來有像測試的樣子 另外,readmoo電子書真的很方便啊
你可能也想看
Google News 追蹤
Thumbnail
/ 大家現在出門買東西還會帶錢包嗎 鴨鴨發現自己好像快一個禮拜沒帶錢包出門 還是可以天天買滿買好回家(? 因此為了記錄手機消費跟各種紅利優惠 鴨鴨都會特別注意銀行的App好不好用! 像是介面設計就是會很在意的地方 很多銀行通常會為了要滿足不同客群 會推出很多App讓使用者下載 每次
Thumbnail
这篇文章主要介绍了以太坊价格今日行情_06月28日以太坊最新价格行情美元走势分析的相关资料,需要的朋友可以参考下本文详细内容介绍 🚀 币安 - 全球最大加密货币交易所 💥 独家优惠 💥 💰 注册即享 20% 手续费返佣 🔑 专属邀请码: R851UX3N 以太坊最新价格行情美元走势
Thumbnail
*搜尋幣種, 最重要是直接搜尋『合約地址』 鏈上數據四大分類 CEX 雙C兄弟 DEX 雙雄 主要關注Dextools, 以項目的角度分析 但所有早期項目十倍百倍幣都在這邊 等上中心化交易所就沒有這麼大的漲幅了 有評分, 一定要參考, 以及合約代碼審計報告 交易訊息 進階
Thumbnail
你知道嗎?網路爬蟲其實是整個搜尋世界的起點。爬蟲將所有上線的網頁快速瀏覽後並整理重點做索引,這樣搜尋引擎才能快速檢索相關內容。今天本男爵就來跟大家好好聊一下,在網路世界中無所不在,但你可能卻從未察覺到的這條「蟲」。
Thumbnail
對於剛接觸Python程式的使用者來說,要一口氣學會爬蟲可能相對困難,但若想即時且輕鬆獲得台股相關數據,你可以利用證交所所提供的API進行數據蒐集。只需要簡單幾行程式碼,就能輕鬆抓到台股上千支股票的每日資訊,是不是棒呆了!!
Thumbnail
呢喃貓團隊可以把一個項目、一個活動、一個交易策略的方方面面都梳理得很透徹⋯⋯你先前在幣圈中學習到的底層邏輯知識,都能在此被激發出來,實際用出來,用在賺錢上!
Thumbnail
古有四大名著,現今Python四大容器🤣 哪四個?list串列,tuple元組,dict字典,set集合。 那這四個怎麼分? 一起來看看吧! (以下有手寫與上機實際測試請付費觀看) 以上我精心整理主要會使用到的功能 當然python功能太多了,肯定不只。 實際操作: 大概就這樣?(
Thumbnail
透過分析臺灣好行的公開資料,分享如何用Python繪製折線圖
Thumbnail
題目敘述 題目會給我們一棵二元搜索樹的根結點root,還有一個指定的目標值val。 要求我們找出在樹中對應到目標值val的節點,假如找不到,請回傳null( null在Python就是None)。 題目的原文敘述 測試範例 Example 1: Input: root = [4,2,
Thumbnail
/ 大家現在出門買東西還會帶錢包嗎 鴨鴨發現自己好像快一個禮拜沒帶錢包出門 還是可以天天買滿買好回家(? 因此為了記錄手機消費跟各種紅利優惠 鴨鴨都會特別注意銀行的App好不好用! 像是介面設計就是會很在意的地方 很多銀行通常會為了要滿足不同客群 會推出很多App讓使用者下載 每次
Thumbnail
这篇文章主要介绍了以太坊价格今日行情_06月28日以太坊最新价格行情美元走势分析的相关资料,需要的朋友可以参考下本文详细内容介绍 🚀 币安 - 全球最大加密货币交易所 💥 独家优惠 💥 💰 注册即享 20% 手续费返佣 🔑 专属邀请码: R851UX3N 以太坊最新价格行情美元走势
Thumbnail
*搜尋幣種, 最重要是直接搜尋『合約地址』 鏈上數據四大分類 CEX 雙C兄弟 DEX 雙雄 主要關注Dextools, 以項目的角度分析 但所有早期項目十倍百倍幣都在這邊 等上中心化交易所就沒有這麼大的漲幅了 有評分, 一定要參考, 以及合約代碼審計報告 交易訊息 進階
Thumbnail
你知道嗎?網路爬蟲其實是整個搜尋世界的起點。爬蟲將所有上線的網頁快速瀏覽後並整理重點做索引,這樣搜尋引擎才能快速檢索相關內容。今天本男爵就來跟大家好好聊一下,在網路世界中無所不在,但你可能卻從未察覺到的這條「蟲」。
Thumbnail
對於剛接觸Python程式的使用者來說,要一口氣學會爬蟲可能相對困難,但若想即時且輕鬆獲得台股相關數據,你可以利用證交所所提供的API進行數據蒐集。只需要簡單幾行程式碼,就能輕鬆抓到台股上千支股票的每日資訊,是不是棒呆了!!
Thumbnail
呢喃貓團隊可以把一個項目、一個活動、一個交易策略的方方面面都梳理得很透徹⋯⋯你先前在幣圈中學習到的底層邏輯知識,都能在此被激發出來,實際用出來,用在賺錢上!
Thumbnail
古有四大名著,現今Python四大容器🤣 哪四個?list串列,tuple元組,dict字典,set集合。 那這四個怎麼分? 一起來看看吧! (以下有手寫與上機實際測試請付費觀看) 以上我精心整理主要會使用到的功能 當然python功能太多了,肯定不只。 實際操作: 大概就這樣?(
Thumbnail
透過分析臺灣好行的公開資料,分享如何用Python繪製折線圖
Thumbnail
題目敘述 題目會給我們一棵二元搜索樹的根結點root,還有一個指定的目標值val。 要求我們找出在樹中對應到目標值val的節點,假如找不到,請回傳null( null在Python就是None)。 題目的原文敘述 測試範例 Example 1: Input: root = [4,2,