VBAはWebからデータを取得することができる
今回の記事は「Webスクレイピングとは何か?」を動画で簡単に紹介する為に用意しました。
早速表題の質問(Webスクレイピングとは?できる事は?)に対する回答です。この2つです。
- Webサイトからデータ(情報)を抜き取る
- Webサイトにデータ(情報)を入力する
Webサイトからデータを取得するだけなら手作業でもできるんですけど・・・。
Webスクレイピングができるとメリットあるんですか?
そうですね。確かに手作業でもできます。
しかしWebスクレイピングであれば複数のURLから複数の情報を1クリックで抽出できます。
同様に複数のURLのテキストボックスに複数の情報を1クリックで入力する事ができます。
これは超強力な機能です。可能性しかないです。
大袈裟かもしれませんが「インターネット上のデータが自分のデータベースと同じ」になります。
加えてWebAppへの入力作業は全部自動化できます。
是非多くの人に習得してほしいのですが参考文献も少なく勉強自体の難易度は高いです。
話を進める為にまずはWebスクレイピングがどんなものか説明しなければと思い記事を用意しました。
加えて動画を1つ用意しました。
Yahoo!JAPANのニューストピックスをExcelのワークシートにハイパーリンク付きで用意します。
という事はExcelからChromeやEdgeを操作してYahooやGoogleにアクセスできるという事ですね!!
動的な要素を持つサイトにも対応できているのでできる事が広がりそうです。
動画を見たうえで勉強したくなったら私のブログの中にあるWebスクレイピングの記事を読み進めてください。
関連書籍
私自身がWebスクレイピングを勉強する為に使った書籍を紹介します。
こちらの書籍は電子書籍がおすすめです。
関連記事
「Webスクレイピングの勉強を始めてみたいな」と思った方はまず環境構築をしていただきます。
Excel単体では出来ないので関連のAppなどをインストールして装備を整える必要があります。
具体的に申し上げますとSeleniumbasic(セレニウムベーシック)というアプリケーションが必要になります。
加えて使用する各ブラウザ(Chrome、Edge、Firefoxなど)のDriverも入手する必要があります。
こちらの記事で全ての環境を整える事ができます。
参考:学習用ロードマップと連携しています
本シリーズはこちらの記事とも連携しています。
マクロ勉強の道筋マクロは何から勉強するのか|学習をサポートするためのロードマップを作成
Webスクレイピングとは
Wikipediaには以下の様に記載があります。
簡単に言うと「プログラムを作成しWebページにアクセスして自動で大量の情報を抽出する」という事です。
WebページはHTMLで作られています。HTMLをクローリングして迅速にデータを取得してきます。
ウェブスクレイピング(英: Web scraping)とは、ウェブサイトから情報を抽出するコンピュータソフトウェア技術のこと。
Wikipedia:Webスクレイピング
政府関連の資料でも出てくるキーワードです。内閣府の資料です。
一般的には市場調査や競合調査をする際にデータを取得する為のツールとして使用されています。
データ解析に時間がかかるので情報収集だけでも簡単にしたいという方にはハマる技術です。
メリット
メリットは出したらキリがないです。よって3つに絞ります。
総じて言える事は手動を止めて処理を自動化しタイムリーに情報を取得できるという事ですね。
加えて業務の負荷を減らすという効果も付いてきます。代わってデメリットを提示します。
非常にネガティブな内容ですが拒否しないでください。冷静に考えれば対処できます。
デメリットは対処できる
裏を返せば「知識を習得し決まりを守りつつ注意して使えばOK」という事です。
大企業ですとAmazonさんはスクレイピング禁止です。Yahooさんはファイナンスは禁止です。
岡崎の事件についてはシステムへのアクセス集中が原因なので節度を守れば問題無しです。
取得したデータも分析、解析に使うのであれば何の問題もありません。
メリットのところで開発に・・・と書きましたが当然模倣は禁止です。
取得したデータを活かして自社におけるコンテンツ開発の参考にするという使い方をしましょう。
データの解析、加工の事も考えましょう
データを取得しても扱えないとただの重たいデータです。
しかしWebスクレイピングを考えている人はVBAの扱いは慣れている事でしょう。
二次元動的配列やコレクション、連想配列などを使えばデータ解析も容易となります。
スクレイピングツールを使います
Webスクレイピングは基本的にはスクレイピングツールを用いることになります。
加えてVBA側では特定のライブラリを指定する事でスクレイピングが可能となります。
開発環境は何点か思いつきますがVBAでのスクレイピングにはSeleniumbasicをおすすめします。
Python×Seleniumでも良いのですがPythonを学習しないとけないので導入に手間が増えます。
一番大きな理由としては導入時のストレス(言語学習や環境構築)を減らすためという事になります。
少々勝手ですが私のブログはExcelがメインという事もあります。よってSeleniumbasicを採用していきます。
最後にこれも選定理由の中では大きな要素を占めます。無料です。
よってExcel×Seleniumbasicなら追加費用ゼロ円でスクレイピングが出来るという事になります。
SeleniumbasicとVBAの関係については別記事で解説しています。
2023年08月24日追記
MicrosoftよりExcelにPythonが搭載されるというリリースがありました。
Webスクレイピングの環境がここ数年で変わるかもしれません。
ExcelでPythonが使える【2023年8月】Python in Excelとは|何ができるのか?&今後の展望
しばらくはExcelVBA×Seleniumbasicのトレンドは続きますが今後はPythonの動向が気になるところです。
事例:Youtube動画
冒頭で紹介した動画です。
Yahoo!JAPANのニューストピックスをExcelのワークシートにハイパーリンク付きで用意しています。
コードなどの技術的な事はひとまず置いておいて「こんなことが出来るんだ」という事を認識してください。
まずはWebスクレイピングでどんなアウトプットを用意できるのかご自身の目で確かめてほしいです。
動画の後半でVBEを表示させていますがこの動画だけではコードを全て理解するのは難しいです。
よって今の段階ではコードを理解しなくて良いです。「こんな感じだな」と思うぐらいで大丈夫です。
独学でYahooのニューストピックスを取得できるのか
私のブログのWebスクレイピングのカテゴリーには環境構築(初期設定)他色々な記事を用意しています。
用意された記事を使えば8割ぐらいまでマクロを構築できる様になります。
8割作る事ができたらその時はもう実力が備わっているのであとの2割はご自身で何とかなるはずです。
他には必須スキルとしてVBA自体のスキルも中~上級者である事が求められます。
いわゆる「プログラミングのスキル」が必要なので正直に申し上げますと難しいです。
しかし裏を返せば仕組みや構造、方法が確立されているので勉強さえ出来れば横展可能な分野です。
先にアウトプットを見てもらったのは理由があります
これから勉強する方がモチベーションを維持できる様にと考えた為です。
Webスクレイピングは本当に難しいです。途中で勉強を止めたくなる事もあります。
そんな中勉強当時の私はアウトプットを見てモチベーションを維持していました。
「これが自分で作れるなら・・・」と思い何とか耐えて勉強した結果使いこなせるようになりました。
皆様にWebスクレイピングを習得してもらいたいと思い先にアウトプットを見る為の動画を用意した次第です。
まとめ
今回見ていただいた動画は「Webサイトから情報を抜き取る」作業だけです。まだ50%です。
需要がありましたら「Webサイトに情報を入力する」という作業も動画にしようと思っています。
動画を見てWebスクレイピングがイメージできた方の中で「勉強してみたい」と考えた方。
冒頭で紹介した環境構築の記事へお進みください。
その後は実際にコードを書く事になります。他にもいろいろな記事を用意していますので参考にしてください。
かんたんなコードを紹介VBA×Selenium×ChromeでWebスクレイピング|nameタグを使う
マウスのクリックをVBAで再現【selenium×VBA】右クリックを含めたマウス操作を再現