Python中的網頁抓取和資料提取技術


Python 已成為各種應用程式的首選程式語言,其多功能性擴充套件到了網頁抓取領域。憑藉其豐富的庫和框架生態系統,Python 提供了一個強大的工具集,用於從網站提取資料並解鎖有價值的見解。無論您是資料愛好者、研究人員還是行業專業人士,Python 中的網頁抓取都可能是一項寶貴的技能,可以利用線上海量資訊。

在本教程中,我們將深入探討網頁抓取領域,並探索 Python 中可用於從網站提取資料的各種技術和工具。我們將揭示網頁抓取的基本原理,瞭解圍繞此實踐的合法性和道德考量,並深入研究資料提取的實際方面。在本文的下一部分,我們將介紹專門為網頁抓取設計的 Python 必備庫。我們將仔細研究 BeautifulSoup,這是一個用於解析 HTML 和 XML 文件的流行庫,並探索如何利用它有效地提取資料。

網頁抓取的 Python 必備庫

在 Python 中進行網頁抓取時,有一些必備庫提供了必要的工具和功能。在本節中,我們將向您介紹這些庫並重點介紹其主要功能。

BeautifulSoup 簡介

BeautifulSoup 是 Python 中最流行的網頁抓取庫之一。它允許我們輕鬆地解析和導航 HTML 和 XML 文件。BeautifulSoup 使從網頁中提取特定資料元素(例如文字、連結、表格等)變得容易。

要開始使用 BeautifulSoup,我們首先需要使用 pip(Python 的包管理器)安裝它。開啟您的命令提示符或終端並執行以下命令

pip install beautifulsoup4

安裝完成後,我們可以匯入庫並開始使用其功能。在本教程中,我們將重點介紹 HTML 解析,因此讓我們探索一個示例。考慮以下 HTML 程式碼片段

<html>
  <body>
    <h1>Hello, World!</h1>
    <p>Welcome to our website.</p>
  </body>
</html>

現在,讓我們編寫一些 Python 程式碼來使用 BeautifulSoup 解析此 HTML

from bs4 import BeautifulSoup

html = '''
<html>
  <body>
    <h1>Hello, World!</h1>
    <p>Welcome to our website.</p>
  </body>
</html>
'''

soup = BeautifulSoup(html, 'html.parser')
title = soup.h1.text
paragraph = soup.p.text

print("Title:", title)
print("Paragraph:", paragraph)

輸出

Title: Hello, World!
Paragraph: Welcome to our website.

如您所見,我們從 `bs4` 模組匯入 BeautifulSoup 類,並透過傳遞 HTML 內容和解析器型別 (`html.parser`) 建立了它的例項。然後,我們使用 `soup` 物件透過其標籤(例如 `h1`、`p`)訪問特定元素,並使用 `.text` 屬性提取文字。

使用 Requests 庫

Requests 庫是 Python 中另一個用於網頁抓取的必備工具。它簡化了發出 HTTP 請求和檢索網頁內容的過程。使用 Requests,我們可以獲取網頁的 HTML,然後可以使用 BeautifulSoup 等庫對其進行解析。

要安裝 Requests 庫,請在您的命令提示符或終端中執行以下命令

pip install requests

安裝完成後,我們可以匯入庫並開始使用它。讓我們看看如何獲取網頁的 HTML 內容的示例

import requests

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

print(html_content)

輸出

<!doctype html>
<html>
  <head>
    <title>Example Domain</title>
    ...
  </head>
  <body>
    <h1>Example Domain</h1>
    ...
  </body>
</html>

在上面的程式碼中,我們匯入了 Requests 庫並提供了我們要抓取的網頁的 URL `(https://example.com`)。我們使用 `get()` 方法向指定的 URL 傳送 HTTP GET 請求,並將響應儲存在 `response` 變數中。最後,我們使用 `.text` 屬性訪問響應的 HTML 內容。

Python 中的基本網頁抓取技術

在本節中,我們將探索一些使用 Python 的基本網頁抓取技術。我們將介紹檢索網頁內容並使用 CSS 選擇器和 XPath 表示式提取資料,以及處理分頁以抓取多個頁面。

使用 CSS 選擇器和 XPath 表示式提取資料

我們可以使用 CSS 選擇器和 XPath 表示式從 HTML 中提取資料。BeautifulSoup 提供了 `select()` 和 `find_all()` 等方法來利用這些強大的技術。

考慮以下 HTML 程式碼片段

<html>
  <body>
    <div class="container">
      <h1>Python Web Scraping</h1>
      <ul>
        <li class="item">Data Extraction</li>
        <li class="item">Data Analysis</li>
      </ul>
    </div>
  </body>
</html>

讓我們使用 CSS 選擇器提取列表項

from bs4 import BeautifulSoup

html = '''
<html>
  <body>
    <div class="container">
      <h1>Python Web Scraping</h1>
      <ul>
        <li class="item">Data Extraction</li>
        <li class="item">Data Analysis</li>
      </ul>
    </div>
  </body>
</html>
'''

soup = BeautifulSoup(html, 'html.parser')
items = soup.select('.item')

for item in items:
    print(item.text)

輸出

Data Extraction
Data Analysis

在上面的程式碼中,我們使用 `.select()` 方法和 CSS 選擇器 `.item` 來選擇所有類名為“item”的元素。然後,我們遍歷選定的元素並使用 `.text` 屬性列印其文字。

類似地,BeautifulSoup 支援用於資料提取的 XPath 表示式。但是,對於 XPath 功能,您可能需要安裝 `lxml` 庫,本教程中未介紹。

結論

在本教程中,我們探討了 Python 中的網頁抓取技術,重點介紹了必備庫。我們介紹了用於解析 HTML 和 XML 的 BeautifulSoup,以及用於檢索網頁內容的 Requests。我們提供了使用 CSS 選擇器提取資料的示例,並討論了網頁抓取的基礎知識。在下一部分,我們將深入研究高階技術,例如處理 JavaScript 渲染的頁面和使用 API。敬請期待後續文章中的更多見解!

更新於: 2023年7月26日

183 次檢視

開啟您的 職業生涯

透過完成課程獲得認證

開始學習
廣告