Chrome拡張機能でスクレイピング(動作検証済み)

手作業で大量のWebサイトをコピペする場合は、いくつかの方法がある。

  1. Chrome拡張機能でスクレイピングツールを使う
  2. ChromeにJSを実行するConsole/ブックマークレットを使う
  3. スクレイピングWebサービスを使う(import.ioなど)
  4. スクレイピング用アプリケーションを使う(UiPathなど)
  5. スクレイピング代行会社を使う(Octoparseなど)

今回は上記の1と2をメモる。

Chrome拡張機能 スクレイピングツール

1. Web Scraper

Web Scraper

大量のページをスクレイピングする場合におすすめ。

かなり使いやすく、設定も慣れるとかんたん。公式サイトに動画で解説してくれていたり、スクレイピングのトレーニング用Webサイトまで用意されている。
Webサイトの階層もくだっていける。たとえば、大カテゴリー > 中カテゴリー > 小カテゴリー と各カテゴリーに表示されている取扱商品数を順に数えていく、など。

参考サイト

2. Scraper

Scraper

リストになっているような情報をスクレイピングする場合におすすめ。

よくあるような、左サイドメニューに表示されるカテゴリメニューやコンテンツと表示するテーブル表など、規則性があるものであれば、Scraperを使うとExcel表のように行と列に情報をわけて抽出ができる。
さらに、HTMLの要素もついでに取得しているため、たとえばカテゴリメニューだと、テキストとリンク先URLのセットになっていることが多いが、その場合は「カテゴリ名」「リンク先URL」と2列にして情報を抽出してくれる。

tableタグだけでなくliタグなど、リスト系のものであれば抽出が可能。
ただし、divタグでリストっぽく表示しているようなケースだと抽出ができない。

参考サイト

3. ScriptAutoRunner

ScriptAutoRunner

JSがかんたんに実行できるようにするツール。自分でスクレイピングするJSコードを書いて実行したい場合におすすめ。

これだけでスクレイピングができるわけではないため、自分でスクレイピングするためのJSコードを記述して、このツールに登録&実行が必要。
CDNに置いてあるような外部JSライブラリ(たとえば、jQueryやvue.jsなど)も、このツールで読みませることが可能なため、jQueryだけブラウザ上で読み込ませておき、あとはChromeのConsoleでjQueryのJSコードを実行したい、みたいな使い方もできる。

ただし、Chromeのセキュリティ強化対応のため、外部JSを読み込ませてからJS実行すると以下のような警告が出てうまく動かないことがある。その場合は、Chrome実行時にセキュリティを無効にしてから起動するなどの対応が必要。

Cross-Origin Read Blocking (CORB) blocked cross-origin response

参考サイト

4. 【参考】Agenty - Advanced Web Scraper

Agenty - Advanced Web Scraper

大量のページというよりは、現在表示しているページの要素やテキストを取得したい場合におすすめ。

ただし、スクレイピング設定画面がかなりの大きさで画面右側を占領してしまうため(そしてその画面は移動も縮小もできない)、たとえば右サイドメニューに表示されている情報をスクレイピングしたい、みたいなときに対象箇所を要素抽出できない。

5. 【参考】Caret Browsing

[Caret Browsing](https://chrome.google.com/webstore/detail/caret-browsing/fklpgenihifpccgiifchnihilipmbffg]

Chrome上にテキストカーソルを表示して、テキスト帳を操作するかの如く扱うことができる。たとえば、あるサイトのカテゴリ名を1行ずつコピーしてExcelに貼り付け、みたいな作業をするような場合に、この拡張機能を使うとマウス操作をせずに、キーボードだけで完結できるため、作業スピード向上とコピペミスが防げる。
実際に使ってみるとかなり楽になる。

Chrome検証ツールのConsole/ブックマークレット実行

ConsoleでJS実行

ConsoleウィンドウでJSを入力すれば実行できるため、スポットでスクレイピング実行したい場合に手軽でおすすめ。これは実際に見たほうがわかりやすいため、以下サイトを参照。

参考サイト: Google Chrome の JavaScript コンソールが便利

Console実行用のJSフレームワーク

このConsole実行しやすくするためのJSフレームワークがある。

artoo.js

artoo.jsをブックマークレットとして登録しておき、そのブックマークレットをクリックすると、Console上でartoo.jsの便利メソッドが実行できるようになる。
実行結果はいろいろな形式で取得可能で、たとえばJSON形式やCSVで取得することができる。

たとえば、以下の例だとliで囲まれた情報をJSONで結果取得している。

artoo.js - Quick Start

ブックマークレットでJS実行

JSコードを「javascript:」を先頭につけてブックマークするだけでJSが実行できる。以下の参考サイトで実際に試したほうがわかりやすい。

参考サイト: すこしでもJSかjQueryが書けるならブックマークレットを作ろう

なお、jQueryもブックマークレット上で読み込むことができる。

参考サイト: ブックマークレットで jQuery を使う魔法の 210 文字

JS実行してデバッグしたい場合

Codepen を利用するのがおすすめ。

参考サイト: Qiita - codepenでウェブ開発入門

スクレイピングツールの使い方のポイント

  1. すべてを自動化しようと思わないこと。すべてを自動化すると工数がかかるため、半自動・半手動を前提で設計する。
  2. 1つのツールにこだわりすぎず、複数のツールや仕組みを組み合わせて、臨機応変に対応すること。
    【例】
    ①ChromeのConsoleでリストになっていない箇所をliに整形し
    Scraper でスクレイピングしてExcel表に吐き出し
    ③Excel表で関数を組んで出力データを整える
    といったような3ステップを半自動で実行するようなことで、大幅に工数削減できる。
  3. 複雑なこと(たとえばブラウザから情報を抽出して、それを条件文で分岐させてから、特定の計算を実行してから、その結果をExcel表に順に入力する、など)や完全自動化を目指したい場合は、Chrome拡張機能の範疇を超えるため、RPAやRDAの導入を検討すること。