1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Playwrightアプリ簡単作成! Web-Runner powered by Playwright を作成しました

Last updated at Posted at 2025-04-09

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の特長

  1. シンプルなワークフローで高度な自動化を実現
    サンプル
{
  "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

ですぐに動きます。
(事前インストールも必要です。)

  1. 視覚的なJSON生成ツール付き
    コマンドを手書きするのも面倒...そんな方のために、付属のjson_generator.htmlを使えば、UIからポチポチと操作するだけでJSONを自動生成できます。

  2. 幅広いブラウザ操作をサポート
    クリック、テキスト入力、ホバー、ドロップダウン選択、スクロール、要素/ページロード待機、スクリーンショット取得

  3. データ抽出も簡単
    サンプル

{
  "action": "get_attribute",
  "selector": "a.product-link",
  "attribute": "href"
}

テキスト抽出はもちろん、属性の取得も簡単です。さらに、href属性を取得する際は自動的に相対URLを絶対URLに変換してくれます。

  1. iframeも自動対応
    iframe内の要素操作が必要な場合も、Web-Runnerは自動的にiframeスコープを検出。多くの場合、特別な命令なしでネストされたフレーム内の要素も操作できます。

  2. PDF内のテキスト抽出も対応
    PDFリンクを検出すると、自動的にファイルをダウンロードしてテキスト抽出を行います。Web上のPDFデータも簡単に取得可能です。

  3. 非同期処理でスピーディな実行
    asyncioを使用して構築されているため、ネットワーク操作やPDFダウンロードなどを効率的に並行処理します。

  4. デバッグも簡単
    詳細なログを提供し、エラー発生時には自動的にスクリーンショットを保存するため、問題解決が容易です。

こんな方におすすめ

  • 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自動化作業の助けになれば嬉しいです。質問やフィードバックがあれば、コメントでお知らせください!

1
1
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
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?