Skip to content

Python の DrissionPage で Web ページを取得する

Python の DrissionPage を利用すると Web ブラウザの操作を自動化することが出来ます。 現時点でサポートしている環境については下記の記載があります。

  • Support system: Windows、Linux、Mac
  • Python version:more than 3.6
  • Support browser: Chromium kernel(eg. Chrome, Edge),electron

このメモでは DrissionPage の ChromiumPage を使って Web ページを取得する、簡単なサンプルをメモしておきます。 尚、DrissionPage のドキュメントページ は中国語だけのようで、英語など他の言語の提供は無いようです…

検証環境

対象 バージョン
macOS 15.3
python 3.12.7
DrissionPage 4.1.0.17

インストール

インストールします。

uv pip install drissionpage

サンプルコード

DrissionPage はデフォルトで「Web ブラウザを表示」しながら動作します。 これを「Web ブラウザを表示しない」、いわゆるヘッドレスモードで動作させるには ChromiumOptions の set_argument() を使ってヘッドレスモードを指定します。

page.wait(10, 15) 部分は「画面遷移の待ち時間」や「CloudFlare の "人間のアクセスか?を判定するロジック」などを回避する為の待機処理です。 この場合、「10 〜 15 秒間、待機する」という意味になります。

DrissionPage が ChromeDriver を利用する際、デフォルトではローカルコンピュータの TCP/9222 を利用するようです。 もし仮にエラーでプログラムが中断されてしまった場合、TCP/9222 を利用するプロセス (実体は DrissionPage の ChromeDriver から起動された Web ブラウザ) が残ってしまう場合があります。 その為、以下の例では finall 節を使って必ず ChromiumPage の quit() を呼び出して終了処理を行い、TCP/9222 を Listen しているプロセスが残らないようにしています。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
#!/usr/bin/env python

from DrissionPage import ChromiumOptions, ChromiumPage

options = ChromiumOptions()
options.set_argument("--headless")
page = ChromiumPage(options)

try:
    page.get("https://www.example.com")
    page.wait(10, 15)
    print(page.title)
    print(page.url)
    print(page.html)
except Exception as e:
    print(e)
finally:
    page.quit()