【ITニュース解説】I Built a Zero-Config Google Maps Lead Scraper with Playwright (No Docker, No Python, No API Keys)
2026年10月14日に「Dev.to」が公開したITニュース「I Built a Zero-Config Google Maps Lead Scraper with Playwright (No Docker, No Python, No API Keys)」について初心者にもわかりやすく解説しています。
ITニュース概要
Googleマップからのビジネス情報収集は難しかった。PlaywrightとNode.js製のオープンソースツールが開発された。DockerやPython不要で、API費用も不要だ。Bot対策や情報強化機能でCSV/JSON出力する。
ITニュース解説
Google マップから特定のビジネス情報を効率的に収集することは、営業活動のリード獲得や市場調査、データ分析など、様々な目的で非常に重要になる。しかし、この情報収集には長年の課題が存在した。公式に提供されているGoogle Places APIは、利用料金が高額で、大量のデータ収集には厳しい回数制限が設けられているため、大規模なデータ収集には不向きだった。また、サードパーティが提供する有料サービスも月に数千円から数万円の費用がかかり、継続的な利用はコスト面で負担となることが多かった。さらに、既存のオープンソースツールも、多くの場合、Dockerのような仮想化技術の複雑な設定やPythonの仮想環境の構築が必要だったり、GoogleのWebページの更新によってすぐに動かなくなる古いスクリプトに依存していたりするため、導入や維持に手間がかかるという問題があった。
このような背景から、開発者はもっと手軽で、すぐに使えて、かつローカル環境で動作するツールを求めていた。それが、「ziara-lead-scrapper」というオープンソースのコマンドラインツールだ。このツールは、Node.jsとTypeScriptというWeb開発で広く使われる技術と、Playwrightという最新のブラウザ自動化ライブラリを組み合わせて開発された。
Google マップのWebページから情報を抽出することの根本的な難しさは、そのページの高度な動的な性質にある。通常のWebサイトであれば、サーバーから送られてくるHTMLファイルを解析することで情報を取得できる。しかし、Google マップのように高度に動的なWebページでは、表示される結果の多くがWebブラウザ上でJavaScriptというプログラミング言語によってリアルタイムに生成・注入される。検索結果がスクロールするたびに新しい情報が次々と読み込まれる「無限スクロール」もその一例だ。また、地域によって表示されるクッキー同意を求めるバナーがページの読み込みを阻害したり、Googleが自動化されたアクセスを検出してブロックする厳格な仕組みを導入していることも、従来のスクレイピングツール(AxiosやCheerio、BeautifulSoupのようなHTML解析ライブラリ)がすぐに機能しなくなる原因だった。これらのツールは静的なHTMLを解析することには長けているが、JavaScriptが生成する動的なコンテンツを扱うことはできないためだ。
ziara-lead-scrapperがこれらの課題をどのように解決しているのか見ていこう。まず、このツールの大きな特徴は「ゼロ摩擦ブラウザオーケストレーション」という考え方だ。これは、ユーザーが面倒な環境設定をしなくてもすぐに使えるようにするという意味合いを持つ。従来のツールがDockerのような仮想環境や特定の外部プログラムのインストールを要求したのに対し、このツールはPlaywrightというライブラリが提供するChromium(Google ChromeのベースとなっているオープンソースのWebブラウザ)を内部的に利用する。もしシステム内にPlaywrightが提供するChromiumが見つからない場合でも、ユーザーが既にインストールしているGoogle ChromeやMicrosoft EdgeといったWebブラウザを自動的に検出して利用する仕組みになっている。Playwrightは、実際にWebブラウザを起動し、人間がWebページを操作するのと同じようにプログラムで操作できる「ヘッドレスブラウザ」(画面表示なしでバックグラウンドで動作するブラウザ)の機能を提供するため、JavaScriptによって動的に生成されるコンテンツや無限スクロール、クッキーバナーの操作といった、通常のHTML解析ツールでは困難だった処理を現実的に実行できるのだ。
次に、このツールには「組み込みのアンチボットステルス」機能が備わっている。これは、GoogleのようなWebサイトが自動化ツールからのアクセスを検知してブロックするのを回避するための重要な機能だ。具体的には、Webブラウザが自動化ツールによって操作されていることを示す情報(navigator.webdriverというプロパティ)を自動的に隠蔽する。さらに、人間が操作するような自然なスクロール速度や、操作と操作の間に意図的に短い遅延を入れる「マイクロディレイ」を再現する。これにより、ロボットのような不自然な挙動を避ける。また、Webブラウザの身元情報を示す「ユーザーエージェント」を自動的に変更したり、ページ表示を妨げるクッキー同意バナーを自動的に閉じたりする機能も備わっており、Webサイトからのブロックをより効果的に回避する工夫が凝らされている。
このツールのもう一つの強力な機能が、「自動リードエンリッチメント」だ。これは、単にビジネスの基本情報(電話番号、住所、評価、レビュー、ウェブサイトなど)を抽出するだけでなく、さらに一歩進んで、収集した生データから「より価値のある情報」を引き出すことを目的としている。コマンド実行時に--enrichというフラグを付けると、スクレイパーは抽出した各ビジネスのウェブサイトをバックグラウンドで並行して訪問する。そして、そのウェブサイトの中から公開されている連絡先メールアドレスを抽出したり、LinkedIn、Twitter/X、Instagram、Facebookといったソーシャルメディアのアカウント情報を探し出したりする。これらの情報は、営業担当者がビジネスに直接アプローチする際に非常に有用な「アクションにつながるリード」となる。最終的に、抽出されたデータは、Googleマップのアイコンなどに使われるUnicodeの不要な文字がクリーンアップされ、整頓された形でCSVファイルやJSONファイルとして出力されるため、他のシステムでの利用やデータ分析にすぐに活用できる。
システムエンジニアを目指す初心者にとって、このツールはWebスクレイピングの実際の課題と、それを最新の技術でどのように解決していくのかを学ぶ良い教材となるだろう。Node.js 18以上がインストールされていれば、GitHubからコードをクローンし、依存関係をインストール、ビルドするだけで、すぐに動作を試すことができる。これにより、Webサイトの動的な性質や、アンチボット対策の重要性、そしてブラウザ自動化ライブラリの強力な機能を体験的に理解する機会が得られるはずだ。