CodeGym /Java Adesua /Python SELF TW /使用BeautifulSoup解析HTML

使用BeautifulSoup解析HTML

Python SELF TW
等級 31 , 課堂 2
開放

1. 加載和解析HTML文件

功能性簡介

函式庫requests就是我們的“使者”, 它負責出門抓取網頁的HTML代碼。它會發送HTTP請求並傳回頁面,像外送披薩一樣,只是沒有“瑪格麗特”和外送盒。

BeautifulSoup則是我們的“廚師”, 它可以輕鬆地將獲取到的HTML分解成小單位(標籤、屬性和文字),讓我們進一步使用。它會幫助我們找到需要的元素並保存重要資訊。

使用requests函式庫

現在我們準備好進行我們的第一個HTTP請求並獲取頁面的HTML代碼。讓我們來練習加載 example.com這個頁面。這個網站是網路時代的老兵,非常適合入門。

Python

import requests

url = 'http://example.com'
response = requests.get(url)

# 檢查一切是否正常
if response.status_code == 200:
    print("頁面加載成功!")
else:
    print("出現問題。錯誤代碼:", response.status_code)

這個程式會向URL發送請求,並根據回傳的響應顯示成功或失敗。如果一切正常,我們手中將擁有頁面的HTML代碼作為文字。

分析錯誤代碼

若你要自動化解析,你常會遇到頁面應該能加載卻無法加載的情況。所以分析錯誤代碼是一個解析多於幾頁面的項目不可缺少的部分。

因為某些網站的擁有者不太喜歡別人解析他們的數據。首先,這可能會增加網站負載(當一次解析數千頁面時)。其次,這些數據是他們賺錢的資產。有很多方法可以對抗解析:CAPCHA、CloudFlare等。

對於商業來說理想的情況是,你可以解析所有競爭對手的數據,但沒人可以解析你的。這種情況像是一場冷戰。

用BeautifulSoup解析HTML

獲取HTML代碼後,我們可以開始用BeautifulSoup來研究它。就像打開一本書來讀它的內容:

Python

from bs4 import BeautifulSoup

# 將HTML代碼內容傳給BeautifulSoup
soup = BeautifulSoup(response.text, 'html.parser')

# 查看內部內容
print(soup.prettify())

方法prettify()會對HTML代碼進行美化格式化,讓你能夠更方便地研究它。在接下來的課程中,我們會開始挖掘這些HTML,就像小孩在沙坑裡玩耍一樣。回家時,疲憊但滿足地收穫滿滿 :)

3. 實踐:加載和分析HTML

為了鞏固理解,讓我們來進行實際操作。我們將嘗試從example.com抓取標題和描述。為此,我們會使用HTML知識和新學會的BeautifulSoup技能。

數據提取

Python

# 抓取頁面標題
title = soup.title.string
print("頁面標題:", title)

# 抓取主標題 (h1)
main_heading = soup.h1.string
print("主標題:", main_heading)

# 抓取段落的文字內容
paragraph = soup.find('p').text
print("第一段落:", paragraph)

在這個範例中,我們使用titleh1屬性和方法find(),來從頁面中提取所需的資訊。我們成為了網路偵探,調查犯罪現場的線索!

4. 常見錯誤

很可能,在處理網頁爬取時,你會遇到一些常見的錯誤,包括HTTP請求處理錯誤、信息提取不正確或HTML解析錯誤。開發穩定可靠的腳本需要耐心和練習。例如,始終檢查狀態碼 (response.status_code)以確保請求成功執行。不正確使用方法find()find_all()可能導致錯誤,特別是當你忽略了HTML結構時。在開始解析之前一定要分析HTML結構。

網頁爬取有很多實際應用:從數據收集分析到自動化監控商品價格。這些知識也可能在面試中對你有所幫助,例如展示一些專案代碼的範例。在實際操作中,像市場行銷人員常會使用爬取技術來監控競爭對手的價格,而開發者則用來與外部網站集成。

當處理新聞聚合器和分析系統的信息時,網頁爬取知識也會派上用場。你可以通過創建腳本自動化完成繁瑣的任務,從不同來源收集數據。讓我們繼續開發我們的虛擬應用程序,感受成為真正的網絡大師的樂趣吧!

留言
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION