在Python中進行動態網頁爬蟲和數據清洗的過程,通常涉及以下步驟:
requests庫發送HTTP請求獲取網頁內容。BeautifulSoup或lxml等庫解析HTML內容,提取所需數據。Selenium或Pyppeteer等工具來模擬瀏覽器行為,執行JavaScript并獲取渲染后的頁面內容。pandas、numpy等)進行數據清洗和預處理。以下是一個簡單的示例,展示如何使用requests、BeautifulSoup和pandas進行動態網頁爬蟲和數據清洗:
import requests
from bs4 import BeautifulSoup
import pandas as pd
# 發送請求
url = 'https://example.com'
response = requests.get(url)
# 檢查請求是否成功
if response.status_code == 200:
# 解析網頁內容
soup = BeautifulSoup(response.content, 'html.parser')
# 提取數據
table = soup.find('table', {'class': 'data-table'})
rows = table.find_all('tr')
# 數據清洗
data = []
for row in rows[1:]: # 跳過表頭
cols = row.find_all('td')
cols = [ele.text.strip() for ele in cols] # 去除空白字符
data.append([ele for ele in cols if ele]) # 去除空值
# 將數據轉換為DataFrame
df = pd.DataFrame(data)
# 進一步清洗(例如,轉換數據類型、處理缺失值等)
df['date'] = pd.to_datetime(df['date']) # 轉換日期格式
df.dropna(inplace=True) # 刪除缺失值
# 輸出結果
print(df)
else:
print(f'請求失敗,狀態碼:{response.status_code}')
在這個示例中,我們首先使用requests庫發送HTTP請求獲取網頁內容,然后使用BeautifulSoup解析HTML并提取表格數據。接著,我們進行數據清洗,包括去除空白字符、刪除空值和轉換數據類型等。最后,我們將清洗后的數據轉換為pandas的DataFrame對象,以便進行進一步的數據分析和處理。