1. 提取文本方法介紹
今天我們要學會怎麼從 HTML 元素中提取寶貴的文本數據和屬性。放下你的刀,因為 使用 BeautifulSoup 處理代碼就像在秋天的果園散步,蘋果在呼喚你去摘。 準備好收穫你的學習成果了嗎?那麼讓我們開始吧!
從 HTML 元素提取文本的方法在我們的列表中排第一。在開始提取文本之前,我們先加載頁面。
import requests
from bs4 import BeautifulSoup
# 加載頁面的 HTML 代碼
url = 'https://example.com'
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
現在我們已經有了一個 soup 對象,它包含了我們 HTML 文檔的樹形結構。 讓我們從某個標籤元素(比如標題)中提取文本。
方法 .text 和 get_text()
屬性 .text 和對應的方法 get_text() 能讓你獲取元素內的文本內容 (包括它的所有子元素)。
# 從第一個找到的 h1 標題提取文本
h1_tag = soup.find('h1')
print(h1_tag.text) # 或 h1_tag.get_text()
試試看:用之前講過的搜索方法找到其他元素,並從中提取文本。你會驚訝於你能獲得多少信息!
2. 提取屬性值
文本是文本,但有時重要數據隱藏在屬性中,就像口袋裡的護照。 想像一下,你需要知道一個鏈接的地址或獲取圖像的 URL (別問我為什麼需要這樣,也許你想收集貓咪圖片呢)。
提取屬性值
假設我們有一個鏈接元素 <a href="https://example.com">Example</a>。我們如何獲取 href 的值呢?很簡單。
# 提取鏈接
a_tag = soup.find('a')
link = a_tag['href']
print("鏈接:", link)
這段代碼提取了 href 屬性的值。其他任何有用的屬性,你都可以用類似的方式提取它們。
試著提取圖片
提取圖片 URL 同樣簡單。我們來看看這個例子 <img src="image.jpg" alt="貓咪">。
# 提取圖片 URL
img_tag = soup.find('img')
image_url = img_tag['src']
print("圖像 URL:", image_url)
使用 BeautifulSoup 的美妙之處在於,它讓我們能夠輕鬆地找到和提取數據, 而不需要操心 HTML 結構的具體運作方式。
3. 提取文本和屬性的範例
該進入實例了。讓我們嘗試一個稍微複雜一點的任務:提取頁面中的所有鏈接, 包括 <a> 標籤中的文本。
範例:提取所有帶文本的鏈接
# 找到所有 a 標籤
a_tags = soup.find_all('a')
# 輸出鏈接和文本
for a_tag in a_tags:
link = a_tag['href']
text = a_tag.get_text()
print(f"文本: {text}, 鏈接: {link}")
如你所見,方法 find_all 非常便捷地找到符合條件的所有元素, 而 for 循環則可以遍歷每一個元素。
4. 錯誤處理
別忘了處理錯誤。有時候 HTML 結構可能並不是你所期望的樣子, 或者某個元素可能缺少預期的屬性。確保你的代碼不會因這種情況而崩潰。
# 提取屬性時的錯誤處理範例
try:
link = a_tag['href']
except KeyError:
link = None
print("屬性 href 未找到!")
這樣可以讓腳本更穩定,不會因一個不起眼的錯誤而停止運行。
5. 真實應用
2019 年,一位俄羅斯企業家分享了他的公司如何通過數據解析達到年營收 2000 萬盧布的故事。 他指出,自動化的信息收集不會限制競爭,反而幫助企業適應市場。
例如,有一位客戶訂購了一個解析器,用於每天從供應商網站收集庫存數據, 這使得該客戶可以及時更新其網上商店的商品種類和價格。 該企業家還強調,儘管某些網站試圖增加解析的難度, 現代技術能有效繞過這些障礙,為企業提供做出戰略決策所需的數據。
GO TO FULL VERSION