返回文章列表

跨平臺剪貼簿記錄程式佈署與編譯

本文說明如何在 Windows、macOS 和 Ubuntu Linux 上佈署剪貼簿記錄程式,並使用 PyInstaller 將 Python 程式碼編譯成可執行檔,方便在不同平臺上分享和執行,同時也涵蓋了使用 Python 的 `webbrowser`、`requests` 和 `Beautiful Soup`

軟體開發 系統管理

在現代軟體開發中,跨平臺佈署和程式碼編譯是不可或缺的環節。本文將引導您如何在 Windows、macOS 和 Ubuntu Linux 系統上佈署剪貼簿記錄程式,並利用 PyInstaller 將 Python 程式碼封裝成可執行檔,簡化程式釋出流程。同時,我們也會探討如何使用 Python 的 webbrowser 模組與網路瀏覽器互動、requests 模組下載網頁內容、Beautiful Soup 模組解析 HTML 結構,以及如何運用 OpenWeather API 取得天氣資料。這些技術的結合,可以讓您開發出功能更豐富、更具實用性的應用程式。例如,可以結合剪貼簿記錄和網頁爬蟲功能,自動擷取剪貼簿中的網址,並下載其內容進行分析。

佈署剪貼簿記錄程式

為了讓剪貼簿記錄程式在不同作業系統上執行,需要進行一些設定。

Windows

  1. 將 Python 指令碼儲存為 C:\Users\al\Scripts\cliprec.py,並將 al 改為您的使用者名稱。
  2. 在相同的 Scripts 目錄中,建立一個名為 cliprec.bat 的批次檔,內容如下:
@call %HOMEDRIVE%%HOMEPATH%\Scripts\.venv\Scripts\activate
@python %HOMEDRIVE%%HOMEPATH%\Scripts\cliprec.py
@pause
@deactivate

您現在可以從終端機或命令提示字元執行此程式,方法是輸入 cliprec

macOS

  1. 將 Python 指令碼儲存為 /Users/al/Scripts/cliprec.py,並將 al 改為您的使用者名稱。
  2. 在相同的 Scripts 目錄中,建立一個名為 cliprec.command 的檔案,內容如下:
source ~/Scripts/.venv/bin/activate
python3 ~/Scripts/cliprec.py
deactivate

然後,在終端機中,切換到 Scripts 目錄並執行 chmod u+x cliprec.command。 您現在可以從 Spotlight 或終端機執行此程式,方法是輸入 cliprec

Ubuntu Linux

  1. 將 Python 指令碼儲存為 /home/al/Scripts/cliprec.py,並將 al 改為您的使用者名稱。
  2. 在相同的 Scripts 目錄中,建立一個名為 cliprec 的檔案,內容如下:
#!/usr/bin/env bash
source ~/Scripts/.venv/bin/activate
python3 ~/Scripts/cliprec.py
read -p "Press any key to continue..." -n1 -s
deactivate

然後,在終端機中,切換到 Scripts 目錄並執行 chmod u+x cliprec。 最後,建立一個名為 ~/.local/share/applications/cliprec.desktop 的檔案,內容如下:

[Desktop Entry]
Type=Application
Name=ClipRec
Exec=/home/al/Scripts/cliprec
Icon=/home/al/Scripts/icon.png
Comment=ClipRec

您現在可以從應用程式選單或終端機執行此程式,方法是輸入 cliprec

內容解密:

以上步驟說明瞭如何在不同作業系統上佈署剪貼簿記錄程式。每個步驟都包含了特定的命令和設定,以確保程式可以正常執行。透過這些步驟,您可以輕鬆地在自己的電腦上佈署此程式,並享受其帶來的便利。

使用 PyInstaller 將 Python 程式編譯為可執行檔

PyInstaller 是一個強大的工具,能夠將 Python 程式編譯為可執行檔,讓您可以輕鬆地分享程式給其他人,即使他們沒有安裝 Python。

安裝 PyInstaller

您可以使用 pip 安裝 PyInstaller:

pip install pyinstaller

編譯 Python 程式

要編譯 Python 程式,您需要在終端機中執行以下命令:

python -m PyInstaller --onefile your_script.py

注意:您需要將 your_script.py 替換為您的 Python 程式檔名。

編譯過程

PyInstaller 會建立一個 build 目錄和一個 dist 目錄。dist 目錄中包含了編譯好的可執行檔。

可執行檔

您可以在 dist 目錄中找到編譯好的可執行檔。您可以將這個檔案複製到其他電腦或透過電子郵件分享給其他人。

注意事項

  • 作為安全預防措施,許多電子郵件提供商可能會阻止包含可執行檔的電子郵件。
  • PyInstaller 不能編譯 Python 程式為機器碼,而是建立一個包含 Python 直譯器和您的指令碼的可執行檔。
  • 編譯好的可執行檔可能相當大,即使是一個簡單的 “Hello, world” 程式,也可能達到 8MB 的大小。

Plantuml 圖表:PyInstaller 編譯過程

圖表翻譯:

上述 Plantuml 圖表展示了 PyInstaller 編譯過程。首先,Python 程式被輸入到 PyInstaller 中,然後 PyInstaller 對其進行編譯,生成 build 目錄和 dist 目錄。最後,dist 目錄中包含了編譯好的可執行檔。

網頁爬蟲技術

在沒有Wi-Fi的時候,我們會發現自己在電腦上做的大部分事情其實都是在網際網路上進行的。為了方便,很多時候我們會習慣性地嘗試檢查電子郵件、閱讀社交媒體或回答一些問題。網頁爬蟲是一種使用程式下載和處理網際網路內容的技術,例如Google使用網頁爬蟲程式來索引網頁以供其搜尋引擎使用。在本章中,我們將學習如何使用Python中的以下模組來輕鬆地爬取網頁:

  • webbrowser:隨Python附帶的模組,可以開啟瀏覽器並跳轉到指定頁面
  • requests:下載網際網路上的檔案和網頁
  • Beautiful Soup (bs4):解析HTML格式以提取所需的資訊
  • Selenium:啟動和控制瀏覽器

網頁爬蟲的應用

網頁爬蟲可以用於各種應用,例如:

  • 資料採集:從網頁中提取有用的資訊
  • 自動化:自動完成重複性的任務
  • 監控:監控網頁的變化

Beautiful Soup的使用

Beautiful Soup是一個強大的HTML和XML解析器,可以用於提取網頁中的資訊。以下是Beautiful Soup的基本使用方法:

from bs4 import BeautifulSoup
import requests

# 下載網頁
url = "https://www.example.com"
response = requests.get(url)

# 解析HTML
soup = BeautifulSoup(response.text, 'html.parser')

# 提取資訊
title = soup.title.string
print(title)

Selenium的使用

Selenium是一個自動化瀏覽器的工具,可以用於模擬使用者的行為。以下是Selenium的基本使用方法:

from selenium import webdriver

# 啟動瀏覽器
driver = webdriver.Chrome()

# 開啟網頁
url = "https://www.example.com"
driver.get(url)

# 關閉瀏覽器
driver.quit()

練習題目

  1. Beautiful Soup的主要功能是什麼?
  2. Selenium的主要功能是什麼?
  3. 如何使用requests下載網頁?
  4. 如何使用Beautiful Soup提取網頁中的資訊?
  5. 如何使用Selenium啟動和控制瀏覽器?

圖表翻譯:

內容解密:

以上程式碼示範瞭如何使用Beautiful Soup和Selenium進行網頁爬蟲。Beautiful Soup可以用於解析HTML和提取資訊,而Selenium可以用於啟動和控制瀏覽器以模擬使用者的行為。這些工具可以用於各種應用,例如資料採集、自動化和監控。

網路瀏覽器模組

Python 的 webbrowser 模組允許指令碼存取網路伺服器。這個模組的 open() 函式可以啟動一個新的瀏覽器視窗並導航到指定的 URL。

使用 webbrowser 模組

要使用 webbrowser 模組,首先需要匯入它。然後,可以使用 open() 函式來啟動瀏覽器並導航到指定的 URL。

import webbrowser

url = "https://www.google.com"
webbrowser.open(url)

專案 6:使用 webbrowser 模組執行程式

讓我們透過一個實際的專案來學習如何使用 webbrowser 模組。這個專案的目的是建立一個指令碼,當執行時,可以啟動瀏覽器並導航到 OpenStreetMap 的網頁。

步驟 1:確定 URL

首先,需要確定 OpenStreetMap 的 URL 格式。OpenStreetMap 的 URL 格式為 https://www.openstreetmap.org/search?query=<地址字串>,其中 <地址字串> 是要查詢的地址。

步驟 2:處理命令列引數

接下來,需要處理命令列引數。可以使用 sys 模組來讀取命令列引數。以下是示例程式碼:

import webbrowser, sys

if len(sys.argv) > 1:
    # 從命令列引數中取得地址
    address = ' '.join(sys.argv[1:])

步驟 3:取得剪貼簿內容

如果沒有命令列引數,則需要從剪貼簿中取得地址。可以使用 pyperclip 模組來讀取剪貼簿內容。以下是示例程式碼:

import pyperclip

# 從剪貼簿中取得地址
address = pyperclip.paste()

步驟 4:啟動瀏覽器

最後,需要啟動瀏覽器並導航到 OpenStreetMap 的網頁。可以使用 webbrowser 模組的 open() 函式來啟動瀏覽器。以下是示例程式碼:

url = f"https://www.openstreetmap.org/search?query={address}"
webbrowser.open(url)

完整程式碼

以下是完整的程式碼:

import webbrowser, sys, pyperclip

if len(sys.argv) > 1:
    # 從命令列引數中取得地址
    address = ' '.join(sys.argv[1:])
else:
    # 從剪貼簿中取得地址
    address = pyperclip.paste()

url = f"https://www.openstreetmap.org/search?query={address}"
webbrowser.open(url)

這個指令碼可以從命令列引數或剪貼簿中取得地址,並啟動瀏覽器導航到 OpenStreetMap 的網頁。

使用Python下載網頁內容

使用requests模組可以輕鬆下載網頁內容,而不需要擔心複雜的網路錯誤、連線路由和資料壓縮等問題。首先,您需要安裝requests模組。

下載網頁

requests.get()函式接受一個代表網址的字串作為引數,下載指定網址的內容。該函式傳回一個Response物件,包含了網頁伺服器對您的請求的回應。以下是使用requests模組下載網頁的範例:

import requests

url = "https://www.example.com"
response = requests.get(url)

print(response.status_code)  # 列印HTTP狀態碼
print(response.text)  # 列印網頁內容

在這個範例中,我們使用requests.get()函式下載了https://www.example.com的內容。然後,我們列印了HTTP狀態碼和網頁內容。

處理下載的內容

下載的內容儲存在response.text屬性中,您可以使用這個屬性來存取下載的內容。例如,您可以使用print()函式列印下載的內容:

print(response.text[:210])  # 列印前210個字元

這個範例列印了下載的內容的前210個字元。

處理錯誤

在下載網頁內容時,可能會發生錯誤,例如網頁伺服器無法連線或網頁不存在等。您可以使用try-except塊來捕捉和處理這些錯誤:

try:
    response = requests.get(url)
    response.raise_for_status()  # 引發HTTPError異常,如果HTTP請求傳回了4XX或5XX狀態碼
except requests.exceptions.HTTPError as errh:
    print(f"HTTP Error: {errh}")
except requests.exceptions.ConnectionError as errc:
    print(f"Error Connecting: {errc}")
except requests.exceptions.Timeout as errt:
    print(f"Timeout Error: {errt}")
except requests.exceptions.RequestException as err:
    print(f"Something went wrong: {err}")

這個範例捕捉了可能發生的錯誤,並列印了錯誤訊息。

下載檔案

您也可以使用requests模組下載檔案。例如,您可以使用以下程式碼下載一個圖片:

import requests

url = "https://example.com/image.jpg"
response = requests.get(url)

with open("image.jpg", "wb") as file:
    file.write(response.content)

這個範例下載了https://example.com/image.jpg的圖片,並將其儲存為一個名為image.jpg的檔案。

網路爬蟲與檔案下載

網路爬蟲是指透過程式自動下載網頁內容的過程。以下是使用 Python 進行網路爬蟲的步驟。

下載網頁

首先,需要使用 requests 函式庫下載網頁。這可以透過 requests.get() 函式完成。

import requests

url = "https://example.com"
response = requests.get(url)

檢查下載結果

下載完成後,需要檢查下載結果是否成功。這可以透過 response.status_code 屬性完成。如果狀態碼為 200,表示下載成功。

if response.status_code == 200:
    print("下載成功")
else:
    print("下載失敗")

處理下載內容

如果下載成功,則可以透過 response.text 屬性取得下載的內容。

print(response.text[:210])

儲存下載內容

如果需要儲存下載內容,則可以使用 open() 函式以二進位制模式 ('wb') 開啟檔案,並使用 write() 方法寫入內容。

with open('RomeoAndJuliet.txt', 'wb') as play_file:
    for chunk in response.iter_content(100000):
        play_file.write(chunk)

處理錯誤

如果下載失敗,則需要處理錯誤。這可以透過 try-except 區塊完成。

try:
    response.raise_for_status()
except Exception as exc:
    print(f'發生錯誤:{exc}')
內容解密:

以上程式碼示範瞭如何使用 Python 進行網路爬蟲與檔案下載。其中,requests.get() 函式用於下載網頁,response.status_code 屬性用於檢查下載結果,response.text 屬性用於取得下載內容,open() 函式用於儲存下載內容,try-except 區塊用於處理錯誤。

圖表翻譯:

以上圖表示範了網路爬蟲與檔案下載的流程。其中,開始(A)代表程式開始執行,下載網頁(B)代表使用 requests.get() 函式下載網頁,檢查下載結果(C)代表使用 response.status_code 屬性檢查下載結果,處理下載內容(D)代表使用 response.text 屬性取得下載內容,儲存下載內容(E)代表使用 open() 函式儲存下載內容,處理錯誤(F)代表使用 try-except 區塊處理錯誤,結束(G)代表程式結束執行。

存取天氣 API

許多應用程式都設計為與人類使用者互動,但您也可以撰寫程式來與其他程式透過其應用程式介面(API)進行互動,API 是定義軟體如何溝通的規範。線上服務通常都有 API。例如,您可以撰寫 Python 指令碼來釋出到您的社交媒體帳戶或下載新照片。在這個章節中,我們將撰寫一個指令碼來存取 OpenWeather 網站的天氣資訊。

大多數線上服務都需要您註冊電子郵件地址才能使用其 API,即使 API 是免費的,它們也可能有限制每小時或每天可以發出的 API 請求次數。如果您擔心收到垃圾郵件,您可以使用臨時的、一次性電子郵件地址服務,例如 https://register,來註冊不重要的線上帳戶,因為不良的電子郵件服務可能會控制您的線上帳戶。

一旦您註冊了 OpenWeather 的 API,您就會得到一個 API 金鑰,這是一種識別您的帳戶的密碼。請保密這個 API 金鑰!任何人只要有這個金鑰就可以發出被計入您的帳戶的 API 請求。如果您撰寫了一個使用 API 金鑰的程式,請考慮讓程式從包含金鑰的文字檔中讀取金鑰,而不是直接在原始碼中包含金鑰。這樣,您就可以與他人分享您的程式(他們可以註冊自己的 API 金鑰),而不必擔心超過您的帳戶的 API 請求限制。

許多 HTTP API 都以單一字串形式傳遞其回應。這個字串通常以 JSON 或 XML 格式編碼。雖然第 18 章會更詳細地介紹 JSON 和 XML,但現在您只需要知道 json.loads(response.text) 就可以傳回一個包含 JSON 資料的 Python 資料結構。

存取 OpenWeather API

OpenWeather 提供瞭如何使用其 API 的檔案。首先,您需要使用 OpenWeather 找到舊金山的緯度和經度:

import requests

city_name = 'San Francisco'
state_code = 'CA'
country_code = 'US'
API_key = '您的_API_金鑰'  # 請替換為您的真實 API 金鑰

url = f'http://api.openweathermap.org/geo/1.0/direct?q={city_name},{state_code},{country_code}&appid={API_key}'
response = requests.get(url)
response_data = json.loads(response.text)

print(response_data[0]['lat'])
print(response_data[0]['lon'])

解析回應資料

要了解回應中的資料,您應該檢視 OpenWeather 的線上 API 檔案,或在互動式 shell 中檢查 response_data。您會發現回應是一個列表,其第一項(索引 0)是一個具有 ’lat’ 和 ’lon’ 鍵的字典。這些鍵的值分別是浮點數,代表緯度和經度。

圖表翻譯:

內容解密:

上述程式碼示範瞭如何使用 OpenWeather API 取得特定城市的緯度和經度。首先,匯入必要的模組,包括 requestsjson。然後,定義城市名稱、州程式碼、國家程式碼和 API 金鑰。構建 API 請求 URL,並使用 requests.get() 發出請求。取得回應後,使用 json.loads() 解析 JSON 資料。最後,存取並印出緯度和經度。

請注意,您需要替換 '您的_API_金鑰' 為您的真實 API 金鑰。同時,請確保您已經註冊了 OpenWeather 的 API 並取得了有效的金鑰。

使用OpenWeather API取得天氣資料

OpenWeather API是一個提供天氣資料的API,使用者可以透過API取得當前的天氣狀況、溫度、濕度等資料。以下是使用OpenWeather API取得天氣資料的步驟:

步驟1:取得API金鑰

使用者需要先取得OpenWeather API的金鑰,才能夠使用API。金鑰可以在OpenWeather官網申請取得。

步驟2:設定API端點

OpenWeather API的端點為https://api.openweathermap.org/geo/1.0/direct?q={city_name},{state_code},{country_code}&appid={API_key},其中{city_name}為城市名稱,{state_code}為州份程式碼,{country_code}為國家程式碼,{API_key}為API金鑰。

步驟3:取得緯度和經度

使用者可以透過API取得城市的緯度和經度,例如:

import requests
import json

response = requests.get(f'https://api.openweathermap.org/geo/1.0/direct?q=San Francisco,CA,US&appid={API_key}')
response_data = json.loads(response.text)
lat = response_data[0]['lat']
lon = response_data[0]['lon']

步驟4:取得天氣資料

使用者可以透過API取得當前的天氣狀況、溫度、濕度等資料,例如:

response = requests.get(f'https://api.openweathermap.org/data/2.5/weather?lat={lat}&lon={lon}&appid={API_key}')
response_data = json.loads(response.text)
temp = response_data['main']['temp']
feels_like = response_data['main']['feels_like']
humidity = response_data['main']['humidity']

步驟5:轉換溫度單位

OpenWeather API傳回的溫度單位為Kelvin,使用者可以透過以下公式轉換為Celsius或Fahrenheit:

celsius = temp - 273.15
fahrenheit = temp * (9 / 5) - 459.67

步驟6:取得五日預報

使用者可以透過API取得五日預報,例如:

response = requests.get(f'https://api.openweathermap.org/data/2.5/forecast?lat={lat}&lon={lon}&appid={API_key}')
response_data = json.loads(response.text)
forecast_data = response_data['list']
圖表翻譯:

內容解密:

以上程式碼示範瞭如何使用OpenWeather API取得天氣資料,包括取得緯度和經度、取得天氣資料、轉換溫度單位和取得五日預報。使用者可以根據自己的需求修改程式碼來取得所需的天氣資料。

HTML 基礎知識

在開始分析網頁之前,瞭解一些基本的 HTML 知識是必要的。HTML 是用於撰寫網頁的格式,而 CSS 則是用於對 HTML 元素進行樣式設定的方式。本章假設您已經有一些基本的 HTML 經驗,如果您需要一個初學者教程,建議您參考以下網站。

HTML 檔案格式

HTML 檔案是一個純文字檔案,具有 .html 的檔案副檔名。檔案中的文字被 <> 符號所圍繞,這些符號被稱為標籤。標籤告訴瀏覽器如何格式化網頁。一個開始標籤和結束標籤可以圍繞一些文字形成一個 HTML 元素。顯示的文字是開始和結束標籤之間的內容。例如,以下的 HTML 會在瀏覽器中顯示 Hello,世界!:

<b>Hello</b>, world!

在瀏覽器中,這個 HTML 會顯示如下:

圖表翻譯:

此圖表顯示了瀏覽器中渲染的 HTML 結果。

檢視網頁原始碼

要檢視網頁的原始碼,可以右擊網頁並選擇「檢視原始碼」或「檢視網頁原始碼」。這會顯示瀏覽器接收到的原始 HTML 程式碼。

開啟瀏覽器的開發者工具

除了檢視網頁原始碼外,您還可以使用瀏覽器的開發者工具來檢視網頁的 HTML 結構。在 Firefox、Chrome 和 Microsoft Edge 中,可以按下 F12 鍵來開啟開發者工具。右擊網頁任意位置並選擇「檢查元素」可以開啟開發者工具,並顯示出該部分網頁的 HTML 程式碼。

內容解密:

開發者工具可以幫助您解析 HTML 程式碼,並找到您感興趣的資訊。

Beautiful Soup 介紹

Beautiful Soup 是一個用於從 HTML 網頁中提取資訊的套件。您可以使用 beautifulsoup4 來安裝套件,並使用 bs4 來匯入模組。在本文中,我們將使用 Beautiful Soup 來解析 /example3.html 檔案,該檔案包含以下內容:

<!-- 這是一個 HTML 註解。 -->
<html>
<head>
<title>範例網站標題</title>

<style>

.slogan {
  color: gray;
  font-size: 2em;
}
</style>
</head>
<body>

<h1>範例網站</h1>

圖表翻譯:

此圖表顯示了 Beautiful Soup 對 HTML 檔案的解析結果。

建立 Beautiful Soup 物件

bs4.BeautifulSoup() 函式接受一個包含 HTML 程式碼的字串作為輸入,並傳回一個 Beautiful Soup 物件。例如:

from bs4 import BeautifulSoup

html = """
<!-- 這是一個 HTML 註解。 -->
<html>
<head>
<title>範例網站標題</title>

<style>

.slogan {
  color: gray;
  font-size: 2em;
}
</style>
</head>
<body>

<h1>範例網站</h1>
"""

soup = BeautifulSoup(html, 'html.parser')

內容解密:

Beautiful Soup 物件可以用於解析 HTML 程式碼,並提取出您感興趣的資訊。

使用Beautiful Soup進行網頁解析

Beautiful Soup是一個Python函式庫,用於解析HTML和XML檔案。它可以幫助您找到網頁中的特定元素、提取資料和修改網頁結構。

安裝Beautiful Soup

要使用Beautiful Soup,您需要先安裝它。您可以使用pip安裝:

pip install beautifulsoup4

載入HTML檔案

您可以使用requests函式庫下載網頁的HTML檔案,然後使用Beautiful Soup解析它。以下是範例程式碼:

import requests
from bs4 import BeautifulSoup

# 下載網頁的HTML檔案
url = "https://automatetheboringstuff.com/"
res = requests.get(url)

# 解析HTML檔案
example_soup = BeautifulSoup(res.text, 'html.parser')

您也可以從硬碟載入HTML檔案:

with open('example3.html') as example_file:
    example_soup = BeautifulSoup(example_file, 'html.parser')

查詢元素

您可以使用select()方法查詢網頁中的特定元素。該方法傳回一個Tag物件列表,代表匹配的HTML元素。以下是範例程式碼:

# 查詢所有div元素
divs = example_soup.select('div')

# 查詢具有id屬性為author的元素
author_element = example_soup.select('#author')

# 查詢所有使用notice CSS類別的元素
notice_elements = example_soup.select('.notice')

# 查詢所有div元素中的span元素
span_elements = example_soup.select('div span')

CSS選擇器

Beautiful Soup支援CSS選擇器,您可以使用它們查詢元素。以下是常見的CSS選擇器範例:

選擇器匹配
div所有div元素
#author具有id屬性為author的元素
.notice所有使用notice CSS類別的元素
div span所有div元素中的span元素

提取資料

一旦您找到所需的元素,您就可以提取其資料。以下是範例程式碼:

# 提取元素的文字內容
text = author_element[0].get_text()

# 提取元素的屬性值
attr_value = author_element[0].attrs['id']

修改網頁結構

您也可以使用Beautiful Soup修改網頁結構。以下是範例程式碼:

# 新增一個div元素
new_div = example_soup.new_tag('div')
example_soup.append(new_div)

# 刪除一個元素
example_soup.select('#author')[0].decompose()

這些只是Beautiful Soup的一些基本用法。您可以檢視其官方檔案以瞭解更多功能和用法。

使用Beautiful Soup進行網頁解析

Beautiful Soup是一個強大的Python函式庫,用於解析HTML和XML檔案。它可以幫助您從網頁中提取有用的資訊。

安裝Beautiful Soup

要使用Beautiful Soup,您需要先安裝它。您可以使用pip安裝Beautiful Soup:

pip install beautifulsoup4

基本使用

以下是Beautiful Soup的基本使用方法:

import bs4

# 開啟一個HTML檔案
example_file = open('example.html')

# 建立一個Beautiful Soup物件
example_soup = bs4.BeautifulSoup(example_file.read(), 'html.parser')

# 查詢所有<p>元素
p_elems = example_soup.select('p')

# 列印每個<p>元素的內容
for p_elem in p_elems:
    print(p_elem.gettext())

選擇器

Beautiful Soup提供了多種選擇器,用於查詢特定的HTML元素。以下是一些常用的選擇器:

  • select('tag'):查詢所有具有指定標籤的元素。
  • select('#id'):查詢具有指定id的元素。
  • select('.class'):查詢具有指定類別的元素。
  • select('tag#id'):查詢具有指定標籤和id的元素。
  • select('tag.class'):查詢具有指定標籤和類別的元素。

屬性和內容

您可以使用attrs屬性來存取元素的屬性,使用gettext()方法來存取元素的內容。

# 查詢具有指定id的元素
elem = example_soup.select('#author')[0]

# 列印元素的屬性
print(elem.attrs)

# 列印元素的內容
print(elem.gettext())

實際應用

以下是一個實際應用的例子:

import bs4

# 開啟一個HTML檔案
example_file = open('example.html')

# 建立一個Beautiful Soup物件
example_soup = bs4.BeautifulSoup(example_file.read(), 'html.parser')

# 查詢所有<p>元素
p_elems = example_soup.select('p')

# 列印每個<p>元素的內容
for p_elem in p_elems:
    print(p_elem.gettext())

# 查詢具有指定id的元素
elem = example_soup.select('#author')[0]

# 列印元素的屬性
print(elem.attrs)

# 列印元素的內容
print(elem.gettext())

這個例子展示瞭如何使用Beautiful Soup來解析HTML檔案,查詢特定的元素,存取元素的屬性和內容。

Plantuml圖表

@startuml
skinparam backgroundColor #FEFEFE
skinparam componentStyle rectangle

title 跨平臺剪貼簿記錄程式佈署與編譯

package "Linux Shell 操作" {
    package "檔案操作" {
        component [ls/cd/pwd] as nav
        component [cp/mv/rm] as file
        component [chmod/chown] as perm
    }

    package "文字處理" {
        component [grep] as grep
        component [sed] as sed
        component [awk] as awk
        component [cut/sort/uniq] as text
    }

    package "系統管理" {
        component [ps/top/htop] as process
        component [systemctl] as service
        component [cron] as cron
    }

    package "管線與重導向" {
        component [| 管線] as pipe
        component [> >> 輸出] as redirect
        component [$() 命令替換] as subst
    }
}

nav --> file : 檔案管理
file --> perm : 權限設定
grep --> sed : 過濾處理
sed --> awk : 欄位處理
pipe --> redirect : 串接命令
process --> service : 服務管理

note right of pipe
  命令1 | 命令2
  前者輸出作為後者輸入
end note

@enduml

這個Plantuml圖表展示了Beautiful Soup的工作流程。首先,Beautiful Soup開啟一個HTML檔案,然後使用選擇器查詢特定的元素。接下來,Beautiful Soup存取元素的屬性和內容,最後列印預出結果。

從使用者經驗視角來看,簡化跨平臺佈署流程對於提升開發效率至關重要。分析Windows、macOS 和 Ubuntu Linux 的佈署步驟,可以發現雖然作業系統的差異導致設定流程略有不同,但核心概念都是一致的:建立執行指令碼、設定環境變數、賦予執行許可權。技術限制深析顯示,使用者仍需自行處理不同系統的細節差異,例如批次檔、命令稿和桌面專案的建立。未來,跨平臺佈署工具的發展將更注重自動化組態和簡化操作,例如自動偵測作業系統、生成對應的執行指令碼,並自動設定環境變數和許可權。玄貓認為,開發者應積極探索和採用這些新興工具,以進一步提升開發效率和降低佈署成本。