使用 Python 中的正則表示式和 urllib 解析網站
網路抓取是一種強大的技術,用於從網站中提取資料,它能夠實現資料的自動化提取和分析。得益於其強大的模組生態系統,Python 提供了多種工具來簡化網路抓取任務。urllib 和 re(正則表示式)庫是常用的兩個用於網路抓取的庫。
urllib 是一個 Python 模組,它能夠獲取網頁內容、處理 URL 以及傳送 HTTP 請求。它提供了一種簡單的方法來連線到 Web 伺服器,開啟 URL 以及從網頁獲取 HTML。另一方面,內建的 Python 模組 re 支援正則表示式,正則表示式是用於構建搜尋模式的字元序列。
在本文中,我們將重點介紹如何使用 urllib 和 re 解析網站並檢索相關資料。我們將研究兩個僅依賴於這些庫的示例,並展示如何使用正則表示式從網頁的 HTML 內容中獲取指定資料。
讓我們來看看這兩個例子:
使用 urllib 和正則表示式解析網站標題
在這個例子中,可以使用 urllib 獲取網頁的 HTML 內容,並定義一個模式來使用正則表示式收集資料。透過使用正則表示式,可以匹配和提取 HTML 文字中所需的資訊,這為簡單的網路抓取操作提供了一個快速且靈活的解決方案。
演算法
使用 Python 中的正則表示式和 urllib 解析網站的演算法如下:
步驟 1 - 匯入所需的庫 urllib 和 re。
步驟 2 - 使用 urllib.request() 中的 urlopen() 開啟 url 並檢索 HTML 內容。
步驟 3 - 為 <title> 標籤定義正則表示式模式。
步驟 4 - 搜尋模式的所有出現。
步驟 5 - 執行迴圈並列印所有匹配的標題。
示例
# import the required library import urllib.request import re # Open URL as well as retrieve HTML content link = "https://tutorialspoint.tw/index.htm" # With the aid of urlopen() is utilized of urllib.request to get the URL retrieving = urllib.request.urlopen(link) retrieved_content = retrieving.read().decode() # Define the regular expression pattern pattern = r"<title>(.*?)</title>" # Search all occurrences of the pattern matches = re.findall(pattern, retrieved_content) # Process extracted data for match in matches: print("Title:", match)
輸出
Title: Online Courses and eBooks Library
使用 urllib 和正則表示式解析網站的 URL
在這個例子中,使用 urllib 獲取網頁的 HTML 內容,並使用 re 定義特定的正則表示式模式。該模式被設計為從 HTML 頁面中提取特定的資料項,例如 URL 或其他結構化資料。這種方法允許定製和靈活性,以便根據需要提取資訊。
演算法
使用 Python 中的正則表示式和 urllib 解析網站的演算法如下:
步驟 1 - 為了使用 urllib 和正則表示式,匯入所需的庫 urllib 和 re。
步驟 2 - 使用 urllib.request() 中的 urlopen() 函式開啟 URL 並檢索 HTML 內容。
步驟 3 - 使用 href 標籤定義 URL 的正則表示式模式。
步驟 4 - 搜尋模式的所有出現。
步驟 5 - 執行迴圈並列印所有匹配的標題。
示例
import urllib.request import re # Open URL as well as retrieve HTML content link = "https://tutorialspoint.tw/index.htm" # With the aid of urlopen() is utilized of urllib.request to get the URL retrieving = urllib.request.urlopen(link) retrieved_content = retrieving.read().decode() # Define the desired regular expression pattern pattern = r"<a href="(.*?)">" # Search for all the occurrences of the pattern matches = re.findall(pattern, retrieved_content) # Display after processing extracted data for match in matches: print("URL:", match)
輸出
URL: All the url’s of the website
結論
在本文中,我們分析了兩個僅使用 urllib 和 re 包在 Python 中解析網站的示例。第一個示例展示瞭如何使用正則表示式提取網頁的標題。第二個示例展示瞭如何使用特定的正則表示式模式從錨標籤中提取 URL。這些方法為簡單的網路抓取應用程式提供了一種快速解決方案,這些應用程式需要從 HTML 文字中提取模式。但是,必須記住,對於處理複雜的 HTML 結構或模式匹配需要更復雜方法的情況,正則表示式可能並不適用。