LoginSignup
3
7

More than 1 year has passed since last update.

PythonからChrome DevTools Protocolを使ってChromeを操作する

Last updated at Posted at 2023-01-16

スクレイピングやブラウザの自動操作をするときに、Seleniumを使う人が多いと思います。しかしSeleniumを使うにはブラウザのバージョンとdriverのバージョンを合わせる必要があり、少し面倒臭いです。

この記事では、Chrome DevTools Protocol (CDP)を使ってdriverを経由せずPythonからChromeを操作する方法を紹介します。

ライブラリのインストール

今回はPyChromeDevToolsというものを紹介します。他にもpychromeというものもあります。

インストールはpipでできます。

pip install PyChromeDevTools

サンプルコード

まずChromeをdebugging-port経由で起動しておく必要があります。Macの場合は以下のように起動できます。

/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --remote-debugging-port=9222 --user-data-dir=./user

次のコードはhttps://qiita.com/ を開くコードです。

import PyChromeDevTools

chrome = PyChromeDevTools.ChromeInterface()
chrome.Network.enable()
chrome.Page.enable()

chrome.Page.navigate(url='https://qiita.com/')
chrome.wait_event("Page.loadEventFired", timeout=60)

ここではCDPのPage.navigateメソッドを使っています。

JavaScriptのコードを実行するときはRuntime.evaluateメソッドを使います。次のコードはhttps://qiita.com/ の1番上の記事をクリックするコードです。

chrome.Runtime.evaluate(expression="document.querySelector('.style-11rvgoz').click()")

私は、Developer Toolでcssセレクタを確認→Console画面でJavaScriptのコードを実行して確認→コピペしてPythonから実行という流れでスクレイピングをよく行なっています。

Chrome DevTools Protocolを使ってChromeを自動操作してHTMLを取得し、Beautiful Soupでパースという流れで複雑なスクレピングも行うことができます。

3
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
7