猫川ブログ

正しい思想をあなたに!

Puppeteer、結構いいかも(pyppeteer)

created_at 2024-02-28 06:45:33  author 猫川
ブラウザの自動化って言ったら、やっぱSeleniumが出てくる人が多いと思う。
でももう一つの案として、Puppeteerっていうのがあって、それがすごい使いやすかったら?
私はJSが嫌いなPy専な人間なんで、本来JS用のPuppeteerをPythonに移植したpyppeteerを使ってるんですが、これが本当にいい。
Seleniumみたいにバージョンの合うChromeDriverをダウンロードしてきたり、うまく動いてくれないfind_elementと格闘する必要はもうないんだ
初回起動時は勝手にChromiumを落としてくれるし、実装もbrowserをlaunchして、pageを取得して操るだけ。
非同期処理にも対応してるし、Seleniumに比べればだいぶシンプルでわかりやすい。 ということでSeleniumのコードと比較しよう。
とりあえず例としてYahooのスクリーンショットを撮るプログラム。
Selenium
chrome_options = Options()
chrome_options.add_argument('--headless')
driver = webdriver.Chrome(options=chrome_options)
driver.get("https://www.yahoo.co.jp/")
driver.set_window_size(1024, 768)
driver.save_screenshot("ファイル名")
driver.quit()
これでも全然しっくりくる。でもちょっと長ったらしくて汚い。
Puppeteer
browser = await launch(headless=False)
page = (await browser.pages())[0]
await page.setViewport({"width": 1024, "height": 768})
await page.goto("https://www.yahoo.co.jp/")
await page.screenshot(path="ファイル名")
await browser.close()

どうだろう、Seleniumに比べたらだいぶシンプルで直感的だと思う。
Pythonの癖してJSみたいな関数名を引き継いでるのは違和感ではあるが。

こんな感じでPuppeteerはSeleniumに比べ、結構直感的で非同期処理にも対応してるしすごいいいと思う。
欠点があるとすれば元のJS版が俺が宗教上の理由で嫌ってるGoogle製ってことくらいかなー
戻る
Powered by 猫川PHPブログ v1.4.1