ExcelのVBAでスクレイピングしたデータをデータベースのMySQLへ保存
欲張りな見出しで申し訳ないです。
先日amazonのランキングデータをExcelのシートに取り込みました。
(これはスクレイピングの勉強)
データの活用方法
そのデータを活用するには?
データの中には
- 商品の順位
- ☆の数
- 評価の数
- 金額
があります。
では商品の順位・金額などの推移を特定期間で見れれば安定して売れている商品なのか急上昇中の注目商品なのか、今お値打ちなのか などが分かります。
そこで、推移を見るのには100位までのデータを一定期間保管しないといけません。
amazonランキングは1時間ごとに更新しているようなのですが、例えば
1カテゴリーのランキングを1日置きに取ったら
1カ月で100×30日=3000データ
半年で3000×6か月=18000データ
1年で18000×2=36000データ
これ、Excelで集計するの厳しくない?
一応64bit版なのでデータ数は大丈夫ですが、きっと集計に時間かかりますよね?
という訳でデータベース登場です。
(データベースの勉強)
データーベース
データベースには
- Oracle
- MySQL
- Microsoft SQL Server
- PostgreSQL
- MongoDB
- IBM Db2
- Redis
- Elasticsearch
- SQLite
- Cassandra
- Microsoft Access
(人気順)
など沢山あります。
名前を知っているのは
Oracle / MySQL / Microsoft SQL Server / PostgreSQL / SQLite / Microsoft Accessです。
この中から選ぶのですが世界でもっともシェアされているオープンソースデータベースシステムのMySQLにします。
- 大容量かつ高速での動作
- 操作方法がシンプルで使いやすい
- 無料
- ネットの情報が豊富
実験
早速、Win10 PC にMySQLをインストールしExcelのVBAから接続してみます。
丸丸1日掛かりました・・・
試しにExcelのシートに張り付けている2日分のデータをMySQLのテーブルに取込み、再度シートへ貼り付けました。
速い!
瞬きの間に処理終わっています。
Excelはシートへの読書きに時間がかかるそうなのでそういった処理をなくす事ができれば速度は落ちません。
まとめ
この速度であればカテゴリーごとにテーブルを造れば、データに使うシートは1つで見た目もすっきり出来そうです。
通常、Excelのシートにデータを蓄積すると間違って消さないか、書き込みをしないかを気にするのですが、MySQLであればデータはデーターベースにあるのでシートの誤った編集を気にしなくて良くなります。
また、データーベースは複数台からの同時アクセスが可能なので他の使い道も沢山ありそうです。
お願い
amazonのランキングデータには商品を特定する情報が商品名しかないのでしょうか?
何かコードとかがあれば作りやすいのですが・・・
あと、お気付きの方もおられるかと思いますが、これExcelじゃなくても良くね?って言わないで下さい。
最後に、まさかとは思いますが、
- そういうサイトありますよ~
- amazonで見れますよ~
って情報がありましたらコメントで宜しくお願いします。