就算颱風天還是要發文,今天來學技巧。
使用 requests 和 BeautifulSoup 進行網頁爬蟲是一個非常常見的資料收集方式。透過 requests 模組,我們可以向網頁伺服器發送 HTTP 請求並取得網頁的原始碼,而 BeautifulSoup 則能幫助我們從這些 HTML 原始碼中解析出所需的資料,像是文字、圖片連結、或是特定標籤內的內容。這兩個模組的搭配,可以讓我們快速、有效地收集網路上的資料。
1.requests 模組介紹
requests 模組主要負責向伺服器發送 HTTP 請求並取得回應。最常見的用法是 requests.get(url),其中 url 是我們要爬取的目標網站。執行這個方法後,伺服器會回傳該網頁的原始碼,我們可以透過 .text 屬性取得 HTML 的內容,或使用 .content 取得原始二進位內容。
使用 requests 的時候,我們可以透過 headers 模擬瀏覽器的行為,例如指定 User-Agent 來避免被網站封鎖。再者,如果目標網站有設定反爬蟲機制,我們還能設計適當的休眠時間(例如使用 time.sleep())來降低頻繁訪問的風險。
import requests
url = 'https://example.com'
response = requests.get(url)
print(response.text)
2.BeautifulSoup 模組介紹
BeautifulSoup 可以解析 requests 拿到的 HTML 原始碼,並轉換成樹狀結構,以便我們更方便地尋找和提取資料。基本的操作包括查找標籤、ID、Class 名稱等來定位內容。以 .find() 或 .find_all() 方法為例,可以指定查找某個標籤(例如 或 ),然後擷取文字或連結。以下是一個簡單的例子,從 HTML 中提取所有的標題 文字:
from bs4 import BeautifulSoup
html = """
<html><head><title>Test</title></head>
<body><h1>Header 1</h1><h1>Header 2</h1></body></html>
"""
soup = BeautifulSoup(html, 'html.parser')
headers = soup.find_all('h1')
for header in headers:
print(header.text)
使用 requests 和 BeautifulSoup 進行網頁爬蟲可以快速獲取網路上大量的資料,但也有一些挑戰和潛在風險。例如,網站可能會改變 HTML 結構或反爬機制,使得既有的爬蟲程式失效。在進行網頁爬蟲時,除了要具備基本的 HTML 結構理解能力外,還需隨時調整程式碼來適應不同的網站變化。我自己是用自己的文件來挑戰抓取資料,還沒膽子去嘗試別的,怕一不小心把電腦弄掛了。
那今天就先這樣。