Beautiful Soup 是一個用於從網頁中抓取資料的 Python 函式庫。它會建立用於解析 HTML 和 XML 文件的解析樹,從而可以輕鬆提取所需的資訊。
Beautiful Soup 為網頁抓取提供了幾個關鍵功能:
- 導航解析樹:您可以輕鬆導航解析樹並蒐索元素、標籤和屬性。
- 修改解析樹:它允許您修改解析樹,包括新增、刪除和更新標籤和屬性。
- 輸出格式:可以將解析樹轉換回字串,方便儲存修改後的內容。
要使用 Beautiful Soup,您需要安裝該程式庫以及解析器,例如 lxml 或 html.parser。您可以使用 pip 安裝它們
#Install Beautiful Soup using pip. pip install beautifulsoup4 lxml
處理分頁
在處理跨多個頁面顯示內容的網站時,處理分頁對於抓取所有資料至關重要。
- 辨識分頁結構:檢查網站以了解分頁的結構(例如下一頁按鈕或編號連結)。
- 迭代頁:使用循環迭代每個頁面並抓取資料。
- 更新URL或參數:修改URL或參數以取得下一頁的內容。
import requests from bs4 import BeautifulSoup base_url = 'https://example-blog.com/page/' page_number = 1 all_titles = [] while True: # Construct the URL for the current page url = f'{base_url}{page_number}' response = requests.get(url) soup = BeautifulSoup(response.content, 'html.parser') # Find all article titles on the current page titles = soup.find_all('h2', class_='article-title') if not titles: break # Exit the loop if no titles are found (end of pagination) # Extract and store the titles for title in titles: all_titles.append(title.get_text()) # Move to the next page page_number += 1 # Print all collected titles for title in all_titles: print(title)
提取嵌套數據
有時,您需要提取的資料會嵌套在多層標籤中。以下是如何處理嵌套資料提取。
- 導覽至父標籤:尋找包含巢狀資料的父標籤。
- 擷取巢狀標籤:在每個父標籤中,尋找並擷取巢狀標籤。
- 迭代巢狀標籤:迭代巢狀標籤以擷取所需資訊。
import requests from bs4 import BeautifulSoup url = 'https://example-blog.com/post/123' response = requests.get(url) soup = BeautifulSoup(response.content, 'html.parser') # Find the comments section comments_section = soup.find('div', class_='comments') # Extract individual comments comments = comments_section.find_all('div', class_='comment') for comment in comments: # Extract author and content from each comment author = comment.find('span', class_='author').get_text() content = comment.find('p', class_='content').get_text() print(f'Author: {author}\nContent: {content}\n')
處理 AJAX 請求
許多現代網站使用 AJAX 動態載入資料。處理 AJAX 需要不同的技術,例如使用瀏覽器開發人員工具監視網路請求並在抓取工具中複製這些請求。
import requests from bs4 import BeautifulSoup # URL to the API endpoint providing the AJAX data ajax_url = 'https://example.com/api/data?page=1' response = requests.get(ajax_url) data = response.json() # Extract and print data from the JSON response for item in data['results']: print(item['field1'], item['field2'])
網頁抓取的風險
網路抓取需要仔細考慮法律、技術和道德風險。透過實施適當的保護措施,您可以減輕這些風險並負責任且有效地進行網路抓取。
- 違反服務條款:許多網站在其服務條款 (ToS) 中明確禁止抓取。違反這些條款可能會導致法律訴訟。
- 智慧財產權問題:未經許可抓取內容可能會侵害智慧財產權,引發法律糾紛。
- IP 封鎖:網站可能會偵測並封鎖表現出抓取行為的 IP 位址。
- 帳戶封鎖:如果在需要使用者驗證的網站上進行抓取,則用於抓取的帳戶可能會被禁止。
Beautiful Soup 是一個強大的庫,它透過提供易於使用的介面來導航和搜尋 HTML 和 XML 文檔,從而簡化了網頁抓取過程。它可以處理各種解析任務,使其成為任何想要從網路中提取資料的人的必備工具。
以上是如何使用 Beautiful Soup 從公共網路中提取數據的詳細內容。更多資訊請關注PHP中文網其他相關文章!

Linux終端中查看Python版本時遇到權限問題的解決方法當你在Linux終端中嘗試查看Python的版本時,輸入python...

本文解釋瞭如何使用美麗的湯庫來解析html。 它詳細介紹了常見方法,例如find(),find_all(),select()和get_text(),以用於數據提取,處理不同的HTML結構和錯誤以及替代方案(SEL)

本文比較了Tensorflow和Pytorch的深度學習。 它詳細介紹了所涉及的步驟:數據準備,模型構建,培訓,評估和部署。 框架之間的關鍵差異,特別是關於計算刻度的

在使用Python的pandas庫時,如何在兩個結構不同的DataFrame之間進行整列複製是一個常見的問題。假設我們有兩個Dat...

本文指導Python開發人員構建命令行界面(CLIS)。 它使用Typer,Click和ArgParse等庫詳細介紹,強調輸入/輸出處理,並促進用戶友好的設計模式,以提高CLI可用性。

本文討論了諸如Numpy,Pandas,Matplotlib,Scikit-Learn,Tensorflow,Tensorflow,Django,Blask和請求等流行的Python庫,並詳細介紹了它們在科學計算,數據分析,可視化,機器學習,網絡開發和H中的用途

文章討論了虛擬環境在Python中的作用,重點是管理項目依賴性並避免衝突。它詳細介紹了他們在改善項目管理和減少依賴問題方面的創建,激活和利益。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

SublimeText3 英文版
推薦:為Win版本,支援程式碼提示!

SublimeText3漢化版
中文版,非常好用

WebStorm Mac版
好用的JavaScript開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

SublimeText3 Linux新版
SublimeText3 Linux最新版