手作業で大量のWebサイトをコピペする場合は、いくつかの方法がある。
- Chrome拡張機能でスクレイピングツールを使う
- ChromeにJSを実行するConsole/ブックマークレットを使う
- スクレイピングWebサービスを使う(import.ioなど)
- スクレイピング用アプリケーションを使う(UiPathなど)
- スクレイピング代行会社を使う(Octoparseなど)
今回は上記の1と2をメモる。
Agenda
Chrome拡張機能 スクレイピングツール
1. Web Scraper
大量のページをスクレイピングする場合におすすめ。
かなり使いやすく、設定も慣れるとかんたん。公式サイトに動画で解説してくれていたり、スクレイピングのトレーニング用Webサイトまで用意されている。
Webサイトの階層もくだっていける。たとえば、大カテゴリー > 中カテゴリー > 小カテゴリー と各カテゴリーに表示されている取扱商品数を順に数えていく、など。
参考サイト
- 公式動画見るとイメージつかめる → Web Scraper - Video Tutorials
- トレーニング用のテストサイト → Web Scraper - Test Sites
2. Scraper
リストになっているような情報をスクレイピングする場合におすすめ。
よくあるような、左サイドメニューに表示されるカテゴリメニューやコンテンツと表示するテーブル表など、規則性があるものであれば、Scraperを使うとExcel表のように行と列に情報をわけて抽出ができる。
さらに、HTMLの要素もついでに取得しているため、たとえばカテゴリメニューだと、テキストとリンク先URLのセットになっていることが多いが、その場合は「カテゴリ名」「リンク先URL」と2列にして情報を抽出してくれる。
tableタグだけでなくliタグなど、リスト系のものであれば抽出が可能。
ただし、divタグでリストっぽく表示しているようなケースだと抽出ができない。
参考サイト
3. 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
大量のページというよりは、現在表示しているページの要素やテキストを取得したい場合におすすめ。
ただし、スクレイピング設定画面がかなりの大きさで画面右側を占領してしまうため(そしてその画面は移動も縮小もできない)、たとえば右サイドメニューに表示されている情報をスクレイピングしたい、みたいなときに対象箇所を要素抽出できない。
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をブックマークレットとして登録しておき、そのブックマークレットをクリックすると、Console上でartoo.jsの便利メソッドが実行できるようになる。
実行結果はいろいろな形式で取得可能で、たとえばJSON形式やCSVで取得することができる。
たとえば、以下の例だとliで囲まれた情報をJSONで結果取得している。
ブックマークレットでJS実行
JSコードを「javascript:」を先頭につけてブックマークするだけでJSが実行できる。以下の参考サイトで実際に試したほうがわかりやすい。
参考サイト: すこしでもJSかjQueryが書けるならブックマークレットを作ろう
なお、jQueryもブックマークレット上で読み込むことができる。
参考サイト: ブックマークレットで jQuery を使う魔法の 210 文字
JS実行してデバッグしたい場合
Codepen を利用するのがおすすめ。
参考サイト: Qiita - codepenでウェブ開発入門
スクレイピングツールの使い方のポイント
- すべてを自動化しようと思わないこと。すべてを自動化すると工数がかかるため、半自動・半手動を前提で設計する。
- 1つのツールにこだわりすぎず、複数のツールや仕組みを組み合わせて、臨機応変に対応すること。
【例】
①ChromeのConsoleでリストになっていない箇所をliに整形し
② Scraper でスクレイピングしてExcel表に吐き出し
③Excel表で関数を組んで出力データを整える
といったような3ステップを半自動で実行するようなことで、大幅に工数削減できる。 - 複雑なこと(たとえばブラウザから情報を抽出して、それを条件文で分岐させてから、特定の計算を実行してから、その結果をExcel表に順に入力する、など)や完全自動化を目指したい場合は、Chrome拡張機能の範疇を超えるため、RPAやRDAの導入を検討すること。