仕事でパソコンを使っていると、Webを検索しまくって、必要な情報を収集しなければいけないことがあります。そんな時、どうしてますか?
1つずつ、コピペ(コピー&ペースト)? お疲れ様です!
できるだけ業務負荷を減らしたいなら、ぜひ一度「ウェブスクレイピング」をやってみてください。
この記事では、プログラミングの知識がない人でも、無料ツールとExcelを使って、情報収集を驚速化するための手順をご紹介します。
スクレイピングとは?
scraping(こすり、ひっかき)を意味するウェブスクレイピングとは、Web上から必要なデータを収集して、利用しやすく加工することを意味しています。
以前は、スクレイピングをするためには、VBA、Python、PHPなどのプログラミング言語を使って、ユーザーがデータ収集プログラムを組まなければいけませんでした。
しかし、近年、無料・有料のスクレイピング・ツール(サービス)が多数リリースされています。
- Octoparse (オクトパルス)
- キーウォーカーWEBクローラー
- ScrapeStorm
- Web Scraper
今回は、この中から、業務用有料ツール Octoparse ソフトウェアをダウンロードして、フリープラン(1件あたりデータエクスポート件数10,000レコード以下)の範囲内で、Excel用データを収集してみる方法をご紹介します。
調査項目を決めて、サイトをスクレイピング
たとえば、家電量販店のネット通販サイトを定期的にクロール(巡回)して、スマートウォッチの売価をチェックする、と仮定します。
調べた価格データは、社内資料とするため、最終的に「製品名」「メーカー名」「価格」「発売年月日」の順に列を並べ替えて、自社データベースへインポートするものとします。
(1)まずは、ご自身のパソコンOSに合ったOctoparseのアプリケーションを[ダウンロード]→[インストール]してください。
(2) 次に、Octoparseのフリープランを利用するために、Octoparseアカウントを作成してください。
(3) アカウント作成が完了し、ログインすると、下の画面のようなソフト内webブラウザ(トップ画面)が表示されます。
内臓ブラウザで、ベンチマーク(価格調査)をする某家電量販店通販サイトを開き、その通販サイトの検索窓から「家電 スマートウォッチ」と入力して、対象商品を抽出します。
(検索条件に「家電」と加えるのは、スマートウォッチ関連書籍が表示されてしまうのを避けるためです。)
抽出までの実行(巡回)時間は16秒。この家電量販店サイトでは、46点の商品がピックアップされました。
検索結果をPCローカル環境に、Excelデータ形式でダウンロードします。
この通販サイトでは、「家電 スマートウォッチ」ワードでの商品検索でも、該当商品以外(血圧計、電子タバコ)が15商品抽出されましたので、調査対象外の商品は手動で削除することにして、smartwatch.xlsm というファイル名で保存しました。
マクロを使って自社データベース用にカラム整形
最終形は、「製品名」「メーカー名」「価格」「発売年月日」の順に並んだインポート用データです。しかし、Octoparseを使って抽出した某通販サイト・データは、次のような列構成となっておりました。
「タイトル(製品名のこと)」「タグ_URL」「画像URL」「名前(メーカー名のこと)」(中略)「日時(発売年月日のこと)」「価格」「点数」(後略)
これはもちろん、各サイトごとに商品データベースの作り方、持ち方が異なるために生じる相違です。
今後、定期的にこのサイトの価格情報をチェックするのであれば、ダウンロードしてきた通販サイト仕様のデータを、自社仕様の並び順に整形するマクロを組んでおきましょう。
マクロを使って整形すべきことは
- 通販サイト・データベースから抽出したExcelデータのうち、「タイトル」「名前」「日時」「価格」の4列のみ残して、他の不要な列をすべて削除すること。
- 自社データベースでは、「発売年月日」が最終列に置かれる構造なので、「日時」と「価格」の順番を入れ替えること。
- 列タイトルを、通販サイト用の名称から自社データベース用の名称に置き換えること。つまり、「タイトル」を「製品名」に。「名前」を「メーカー名」に、「日時」を「発売年月日」に変更します。
上記1〜3程度の簡単な手順記憶であれば、[ツール]→[マクロ]→[新しいマクロの記録…]から、マウス&キーボード操作で自動化プログラムを組むことも十分可能です。
しかし、類似したExcelデータベース・カラムの仕様変更に使えるように、上記(1)-(3)の手順をVisual Basicエディター(標準モジュール)で、次のように書きました。
ご自身の用向きに応じて、参照する列を書き換えるなどして、ご自身のマクロブックにコピーしてご活用ください。
Sub list()
'H列からR列までを削除
Columns("H:R").Select
Selection.Delete Shift:=xlToLeft
'E列を削除
Columns("E:E").Select
Selection.Delete Shift:=xlToLeft
'B列からC列までを削除
Columns("B:C").Select
Selection.Delete Shift:=xlToLeft
'C列の左に一列追加
Columns("C:C").Select
Selection.Insert Shift:=xlToRight
'E列をカットして新しいC列に貼付
Columns("E:E").Select
Selection.Cut Destination:=Range("C1")
'A1セルを”製品名”に
Range("A1").Value = ("製品名")
'B1セルを”メーカー名”に
Range(" B1").Value = ("メーカー名")
'D1セルを”発売年月日”に
Range("D1").Value = ("発売年月日 ")
End Sub
まとめ
スクレイピング・ツールとマクロ活用で、Webが自社の貴重な情報源に!
今回、ツールを用いて、通販サイトから31件の商品価格情報を抽出するのにかかった、パソコンの演算時間は16秒でした。前後の準備や事後処理を含めても、成果を得られるまでに要した時間は数分です。
一方、この31件を手作業でコピペしたら何分かかりますか?
実際の業務用データでは、レコード数が31件よりもはるかに多い場合がほとんどでしょう。そのような時、ぜひ無料で使えるウェブスクレイピング・ツールと、マクロを有効活用して、「どうしたら簡単に自社用のデータにカスタマイズできるか」を考えてみてください。
なお、クロール(巡回)するデータ量が多いほど、ウェブスクレイピングでは、サイト側にも負担をかけます。そのため、ページによっては「スクレイピング禁止」の規約を立てているところもあります。実行前には、必ずそのサイトの利用規約を確認し、自社のしていることが規約違反となっていないかどうかをご確認ください。