用PlayWright抓取動態網站資料
· 閱讀時間約 4 分鐘
在這篇文章中,將探討如何使用Python的PlayWright模組來抓取巴哈姆特動漫瘋的彈幕數據。 目標如下:
- 認識PlayWright
- 如何安裝PlayWright。
- 如何利用PlayWright控制網頁行為。
- 如何改寫腳本,抓取、整理和儲存需要的數據。
什麼是PlayWright?
PlayWright 是Microsoft推出的開源專案,是一個Python用戶端,讓我們能夠自動化Web瀏覽器的行為,包括Chrome, Firefox, 和Safari等主流瀏覽器。你可以使用它來進行網站測試、抓取資料,甚至製作自動化的網頁腳本。透過PlayWright,你能控制整個瀏覽過程,包括產生彈幕等動態內容。
如何安裝PlayWright
安裝PlayWright相當簡單,只需要在你的命令列工具 (例如:終端機或Command Prompt) 輸入以下命令即可:
> pip install playwright
如何利用PlayWright控制網頁行為
首先,我們需要啟動一個PlayWright的實例,並且以我們選定的瀏覽器來執行我們的程式。以下是一個以Chromium瀏覽器為例的程式碼,同理也可以使用webkit瀏覽器:
> python -m playwright codegen -b chromium
執行上述命令後,您將開啟一個Chromium瀏覽器並開始與其互動。你的每一個操作,都會自動生成對應的Python程式碼。
codegen命令包含一些可用的參數,例如:
--target: 設定你的程式語言,如 python、JavaScript等。-o: 指定存放生成程式碼的檔案名稱。-b: 選擇你想要使用的瀏覽器,如 chromium、firefox或webkit。
以下是一個實際的例子,使用webkit瀏覽器抓取巴哈姆特動漫瘋網站並將程式碼儲存在damun.py文件中:
> python -m playwright codegen --target python -o damun.py -b webkit https://ani.gamer.com.tw/
此時的damun.py內容參考如下:
from playwright.sync_api import Playwright, sync_playwright
from bs4 import BeautifulSoup
import json
import sys
import time
def run(playwright: Playwright, sn) -> None:
browser = playwright.chromium.launch(headless=False)
context = browser.new_context()
page = context.new_page()
page.goto(f"https://ani.gamer.com.tw/animeVideo.php?sn={sn}")
time.sleep(5)
# screenshot
page.screenshot(path='ani.jpg', full_page = True)
### 稍後加上網頁解析
### 稍後加上內容萃取
### 稍後加上資料儲存
page.close()
# ---------------------
context.close()
browser.close()
with sync_playwright() as playwright:
run(playwright, sys.argv[1])
修改PlayWright腳本
為了包含抓取後的解析及整理,可以在前面透過點選產製的damun.py腳本中,新增解析的程式
-
網頁解析:
page
