Python 爬蟲包可以處理動態內容,但需要使用支持 JavaScript 渲染的庫。對于簡單的動態內容,可以使用 Requests 庫結合 BeautifulSoup 進行解析。但是,對于復雜的動態內容,例如通過 AJAX 請求加載的內容,需要使用更強大的庫,如 Selenium 或 Pyppeteer。
Selenium 是一個自動化測試工具,可以模擬瀏覽器行為,執行 JavaScript 代碼并獲取渲染后的頁面內容。Pyppeteer 是一個基于 Chrome 的無頭瀏覽器庫,可以用于處理復雜的動態內容。
以下是使用 Selenium 和 Pyppeteer 處理動態內容的示例:
from selenium import webdriver
from selenium.webdriver.common.by import By
# 啟動瀏覽器
driver = webdriver.Chrome()
# 訪問目標網站
driver.get("https://example.com")
# 獲取渲染后的頁面內容
content = driver.page_source
# 使用 BeautifulSoup 解析頁面內容
from bs4 import BeautifulSoup
soup = BeautifulSoup(content, "html.parser")
# 提取所需數據
data = soup.find("div", {"class": "target-class"}).text
# 關閉瀏覽器
driver.quit()
import asyncio
from pyppeteer import launch
async def main():
# 啟動瀏覽器
browser = await launch()
page = await browser.newPage()
# 訪問目標網站
await page.goto("https://example.com")
# 獲取渲染后的頁面內容
content = await page.content()
# 使用 BeautifulSoup 解析頁面內容
from bs4 import BeautifulSoup
soup = BeautifulSoup(content, "html.parser")
# 提取所需數據
data = soup.find("div", {"class": "target-class"}).text
# 關閉瀏覽器
await browser.close()
# 運行協程
asyncio.run(main())
請注意,使用這些庫可能會增加爬蟲的復雜性和資源消耗。在使用它們之前,請確保了解目標網站的爬蟲政策和相關法律法規。