【筆記】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


21會員
18內容數
留言0
查看全部
發表第一個留言支持創作者!
冬霞的沙龍 的其他內容
使用顯性等待,以及讓我們的自動化網頁看起來有像測試的樣子 另外,readmoo電子書真的很方便啊
使用顯性等待,以及讓我們的自動化網頁看起來有像測試的樣子 另外,readmoo電子書真的很方便啊
你可能也想看
Google News 追蹤
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
美國總統大選只剩下三天, 我們觀察一整週民調與金融市場的變化(包含賭局), 到本週五下午3:00前為止, 誰是美國總統幾乎大概可以猜到60-70%的機率, 本篇文章就是以大選結局為主軸來討論近期甚至到未來四年美股可能的改變
Thumbnail
Faker昨天真的太扯了,中國主播王多多點評的話更是精妙,分享給各位 王多多的點評 「Faker是我們的處境,他是LPL永遠繞不開的一個人和話題,所以我們特別渴望在決賽跟他相遇,去直面我們的處境。 我們曾經稱他為最高的山,最長的河,以為山海就是盡頭,可是Faker用他28歲的年齡...
从个人发展的角度来讲,我认为每个人都要有一点自己的长处,这个长处并不是人们常说的一些爱好之类的东西,而是个人身上那种相对稀缺的禀赋,或者是几种特质组合起来的独特性能。 这是任何时候都能保持一定竞争力的前提,也是一种不需要卷就能体现出来的个人优势。其实不需要对自己要求很高,只要在自己的领域高于平均,就
Thumbnail
在日常工作、学习、生活中,笔记软件成为重要的生产力工具。然而,如今的笔记软件百花齐放:云文档? 云笔记? 离线笔记? Markdown 编辑器? 块编辑器?双链笔记?在每个类别中,都有几十款比较有名的笔记软件。那么,我们应该如何选择这些适合自己的笔记软件呢? 文本编辑器的特征 文本编辑器的分类
Thumbnail
兩年多前,開始有了重新架構網站的想法,所以把 Blogger 架設的網站,移轉至到了新的平台,當年我也做過了一些優缺點評析,剛好最近又再重新整理網站的所有架構,順便也重新啟動了一次 Hugo 架設網站的循環。
什麼樣的社會運動,才算是成功的社會運動?或者,什麼樣的社會運動,才算有價值與完美的社會運動?這部紀錄片,並未給出一個正確的解答。 但……沒有答案,並不代表就不值得觀看,只因藉由這部紀錄片,我們可以省思在運動之後,這個社會是否得到了什麼?改善了什麼?前進了什麼?還是什麼也沒有,只是一段激情之後換來一股
一直以來,皆認為自己還算是個低物慾的人,直到看了這部紀錄片,才真到見識到何謂低物慾的人與生活。 生活在21世紀的這個時代,「消費」已不再是什麼極為困難、遙不可及的事,相反地,對於現在的我們來說,只要經濟上許可,「消費」早已是易如反掌、稀鬆平常之事,更別說那些以貸款、預支的購買行為。 無需太多思考,當
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
美國總統大選只剩下三天, 我們觀察一整週民調與金融市場的變化(包含賭局), 到本週五下午3:00前為止, 誰是美國總統幾乎大概可以猜到60-70%的機率, 本篇文章就是以大選結局為主軸來討論近期甚至到未來四年美股可能的改變
Thumbnail
Faker昨天真的太扯了,中國主播王多多點評的話更是精妙,分享給各位 王多多的點評 「Faker是我們的處境,他是LPL永遠繞不開的一個人和話題,所以我們特別渴望在決賽跟他相遇,去直面我們的處境。 我們曾經稱他為最高的山,最長的河,以為山海就是盡頭,可是Faker用他28歲的年齡...
从个人发展的角度来讲,我认为每个人都要有一点自己的长处,这个长处并不是人们常说的一些爱好之类的东西,而是个人身上那种相对稀缺的禀赋,或者是几种特质组合起来的独特性能。 这是任何时候都能保持一定竞争力的前提,也是一种不需要卷就能体现出来的个人优势。其实不需要对自己要求很高,只要在自己的领域高于平均,就
Thumbnail
在日常工作、学习、生活中,笔记软件成为重要的生产力工具。然而,如今的笔记软件百花齐放:云文档? 云笔记? 离线笔记? Markdown 编辑器? 块编辑器?双链笔记?在每个类别中,都有几十款比较有名的笔记软件。那么,我们应该如何选择这些适合自己的笔记软件呢? 文本编辑器的特征 文本编辑器的分类
Thumbnail
兩年多前,開始有了重新架構網站的想法,所以把 Blogger 架設的網站,移轉至到了新的平台,當年我也做過了一些優缺點評析,剛好最近又再重新整理網站的所有架構,順便也重新啟動了一次 Hugo 架設網站的循環。
什麼樣的社會運動,才算是成功的社會運動?或者,什麼樣的社會運動,才算有價值與完美的社會運動?這部紀錄片,並未給出一個正確的解答。 但……沒有答案,並不代表就不值得觀看,只因藉由這部紀錄片,我們可以省思在運動之後,這個社會是否得到了什麼?改善了什麼?前進了什麼?還是什麼也沒有,只是一段激情之後換來一股
一直以來,皆認為自己還算是個低物慾的人,直到看了這部紀錄片,才真到見識到何謂低物慾的人與生活。 生活在21世紀的這個時代,「消費」已不再是什麼極為困難、遙不可及的事,相反地,對於現在的我們來說,只要經濟上許可,「消費」早已是易如反掌、稀鬆平常之事,更別說那些以貸款、預支的購買行為。 無需太多思考,當