猫川ブログ


Puppeteer、結構いいかも(pyppeteer)

2024年02月28日 06時45分33秒
投稿者 風緑

Puppeteer、結構いいかも(pyppeteer)

ブラウザの自動化って言ったら、やっぱSeleniumが出てくる人が多いと思う。 でももう一つの案として、Puppeteerっていうのがあって、それがすごい使いやすかったら? 私はJSが嫌いなPy専な人間なんで、本来JS用のPuppeteerをPythonに移植したpyppeteerを使ってるんですが、これが本当にいい。 Seleniumみたいにバージョンの合うChromeDriverをダウンロードしてきたり、うまく動いてくれないfindelementと格闘する必要はもうないんだ 初回起動時は勝手にChromiumを落としてくれるし、実装もbrowserをlaunchして、pageを取得して操るだけ。 非同期処理にも対応してるし、Seleniumに比べればだいぶシンプルでわかりやすい。 ということでSeleniumのコードと比較しよう。 とりあえず例としてYahooのスクリーンショットを撮るプログラム。 Selenium chromeoptions = Options() chromeoptions.addargument('--headless') driver = webdriver.Chrome(options=chromeoptions) driver.get("https://www.yahoo.co.jp/") driver.setwindowsize(1024, 768) driver.savescreenshot("ファイル名") 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ブログ v0.7.3