Playwrightを使ったWeb自動化をJSONだけで実現する方法
このツールの使い方は、動画を見た方が分かりやすいと思います。
Githubはこちら
https://github.com/sinzy0925/web-runner_powerd_by_playwright
はじめに
私はPlaywrightを使ったスクレイピングアプリを何本も作ってきましたが、Playwright初心者の方にとっては学習曲線が急なこともありますね。
そこで「日常的に行っているPlaywright操作をもっと簡単に実行できるツールがあれば...」と思い、Web-Runnerを開発しました。
Web-Runnerは、Playwrightの力を借りつつ、JSONだけでブラウザ操作を自動化できるツールです。コードを書かなくても、JSONで指示を与えるだけで、Webの自動操作が可能になります。
なぜWeb-Runnerを作ったのか?
Playwrightは強力なツールですが、以下のような課題を感じていました:
- 定型的なコードを何度も書くのが面倒
- 初心者には設定の難しさがある
- スクレイピングのためだけに複雑なコードを書くのは非効率
Web-Runnerは、Playwrightの複雑さを隠しながら、その強力な機能を活用できるように設計されています。
Web-Runnerの特長
- シンプルなワークフローで高度な自動化を実現
サンプル
{
"target_url": "https://example.com",
"actions": [
{
"action": "input",
"selector": "#search",
"value": "Playwright"
},
{
"action": "click",
"selector": "button[type='submit']"
},
{
"action": "get_text_content",
"selector": "h1"
}
]
}
たったこれだけのJSONで、Webサイトにアクセス、検索ボックスに入力、ボタンクリック、そして結果の取得ができます!
サンプルは、ダウンロードした、jsonフォルダに入ってます。
python main.py --input duckduckgo2.json --slowmo 1000
ですぐに動きます。
(事前インストールも必要です。)
-
視覚的なJSON生成ツール付き
コマンドを手書きするのも面倒...そんな方のために、付属のjson_generator.htmlを使えば、UIからポチポチと操作するだけでJSONを自動生成できます。 -
幅広いブラウザ操作をサポート
クリック、テキスト入力、ホバー、ドロップダウン選択、スクロール、要素/ページロード待機、スクリーンショット取得 -
データ抽出も簡単
サンプル
{
"action": "get_attribute",
"selector": "a.product-link",
"attribute": "href"
}
テキスト抽出はもちろん、属性の取得も簡単です。さらに、href属性を取得する際は自動的に相対URLを絶対URLに変換してくれます。
-
iframeも自動対応
iframe内の要素操作が必要な場合も、Web-Runnerは自動的にiframeスコープを検出。多くの場合、特別な命令なしでネストされたフレーム内の要素も操作できます。 -
PDF内のテキスト抽出も対応
PDFリンクを検出すると、自動的にファイルをダウンロードしてテキスト抽出を行います。Web上のPDFデータも簡単に取得可能です。 -
非同期処理でスピーディな実行
asyncioを使用して構築されているため、ネットワーク操作やPDFダウンロードなどを効率的に並行処理します。 -
デバッグも簡単
詳細なログを提供し、エラー発生時には自動的にスクリーンショットを保存するため、問題解決が容易です。
こんな方におすすめ
- Webスクレイピングを始めたいけど、コードを書くのが苦手な方
- 定型的なブラウザ操作を自動化したいエンジニア
- PDFを含むWebデータから情報を収集したいデータアナリスト
- QAテストを効率化したいテストエンジニア
- Playwrightを使いたいけど学習コストを抑えたい方
使い方
インストール方法
リポジトリのクローン
git clone https://github.com/sinzy0925/web-runner_powerd_by_playwright.git
cd web-runner_powerd_by_playwright
依存ライブラリのインストール
pip install -r requirements.txt
もしくは直接インストール
pip install playwright PyMuPDF
Playwrightのブラウザをインストール
playwright install
実行方法
JSONファイルを作成(またはjson_generator.htmlを使用)
以下のコマンドで実行
python main.py --input input.json
オプション:
--headless: ブラウザを表示せずに実行
--slowmo 500: 動作確認用。実行速度を遅く(ミリ秒指定)
実際の使用例
例えば、Qiitaのトレンド記事を取得するタスクは以下のようになります:
使える例です。
{
"target_url": "https://qiita.com/",
"actions": [
{
"action": "get_all_text_contents",
"selector": "article h2 a"
}
]
}
これだけで、Qiitaのトレンド記事タイトルが取得できます。
githubに、qiita.jsonがありますので、
python main.py --input qiita.json --slowmo 1000
で実行してみてください。
終わると、main.pyと同じディレクトリに、output_results.txt と output_web_runner.log ができるので、ご確認ください。
まとめ
Web-Runnerは、Playwrightの強力な機能をJSONという簡単なインターフェースで利用できるようにした、Web自動化のためのツールです。コードを書く必要がなく、JSON設定ファイルだけでブラウザ操作を自動化できるため、プログラミングの知識が少ない方でも利用しやすくなっています。
ぜひお試しいただき、フィードバックをいただければ幸いです。また、このツールがPlaywrightの普及の一助となり、より多くの人がWeb自動化の恩恵を受けられることを願っています。
依存関係
Playwright
PyMuPDF (fitz)
ライセンス
このプロジェクトはMITライセンスの下で提供されています。詳細はLICENSEファイルをご覧ください。
足りない機能や、バグもたくさんありそうです。
いろいろ教えてください。
この記事が皆さんのWeb自動化作業の助けになれば嬉しいです。質問やフィードバックがあれば、コメントでお知らせください!