C#でWebスクレイピングに挑戦!!

みなさんこんばんは。
いかがお過ごしでしょうか?
今回はC#でのWebスクレイピングの方法とその手順をまとめました。
この記事は以下のような方におすすめです。
- C#を使ってWebスクレイピングしたい
- Google Chromeでスクレイピングしたい
- Webスクレイピングにある程度の速度を求めたい
※注 本記事ではGoogle Chromeでのスクレイピングを前提としています。
C#スクレイピングを紹介しようと思った背景
以前ExcelVBAでスクレイピング~Web入門~でWebスクレイピングを紹介しました。
あれからC#を使ってWebスクレイピングをする機会があったので紹介+備忘録として
取り上げてみようと思った次第です。
VBAの時と同様手軽に始められるので皆さんもよかったら挑戦してください。
スクレイピングの準備
VisalStudioがインストールされていることを前提に準備から説明していきます。
まず、C#でWebスクレイピングをするにあたりSeleniumというライブラリを使用するので
NuGetパッケージマネージャを使用して以下のパッケージをインストールしましょう。


- Selenium.WebDriver
- Selenium.WebDriver.ChromeDriver
この2つのライブラリを参照設定することでC#でスクレイピングが可能になります。
バージョンは最新の物を入れておけば問題ないです。
既に管理人はインストール済のためインストール済となっていますが
新規にインストールする場合は検索テキストボックスに「Selenium」と入力しましょう。
パッケージソースを「すべて」に変更するのをお忘れなく。
実践Webスクレイピング~メソッド準備~
さて、準備が終わったところでいよいよスクレイピング用のコードを書いていきたいと思います。
以下のようにまずはスクレイピング用のメソッドを用意します。
コードは「C#スクレイピング」で検索するとある程度出てくるためセットアップ処理は
自分でよいと思ったものを採用してください。
管理人の用意したメソッド
ここで1つ管理人が工夫している点としては検索用のメソッドを用意しているところです。
VBAと同様まとめて置いたほうが何かとやりやすいと思ったのでメソッド化することにしました。
良かったら参考してください。
次はスクレイピングするサイトの解析です。
今回は楽天Roomへののログインを自動化してみましょう。
実践Webスクレイピング~サイトの解析~
スクレイピングする対象を決めたら次はサイトの解析を行います。
今回は楽天ROOMへのログインが目的なので楽天ROOMのサイトをWebブラウザで解析しましょう。
ここではChromeを使って解析していきます。
Chromeは今選択している箇所のHTMLを表示できたりとかなり便利なのでおすすめです。
最近はMicrosoftEdgeもChromeベースになったので同様におすすめします。
勿論MicrosoftEdgeについてもスクレイピングは可能です。その場合はNuGetでインストールする
ライブラリを変更する必要がありますが基本的にはChromeと同じです。
F12キーを押し、Webブラウザをデベロッパーモードに切り替えます。
デベロッパーモードへの切り替えは以前の記事を参考にしてください。
デベロッパーモードで調べていくとログインに必要なフィールド名は
- 「サインアップ」ボタン→signUp-loginBtn
- ユーザID入力フィールド→loginInner_u
- パスワード入力フィールド→loginInner_p
- 「ログイン」ボタン→loginButton
であることがわかります。
※注 2つ目以降はサインアップボタン押下後に表示されるページ
今回は前回と違いidタグを設定しているものとclassタグを設定しているものがあります。
idタグは前回同様簡単に取得できますがclassタグは複数ある可能性もあります。
しかし、HTMLを検索してみると「loginButton」は1つしかないことがわかるので
一意に取得することができます。こうなると後は簡単です。
先ほどのセットアップメソッドの引数に解析したタグ名を渡しましょう。
参考コード
このソースコードは管理人が作成したフォームで実行する用のコードの一部ですので適時コピペ等をして
利用してください。このコードを導入して皆さん無事にログインできましたか?
何か不備があればコメント欄で教えていただけると幸いです。
最後に
今回はタグにclassがありましたが、幸いにも一意に定まるフィールで良かったです。
いつか同じclassタグが複数ある状況でのスクレイピングも紹介出来ればと思います。
今まではIEでしかスクレイピングはできないと思っていましたがGoogle Chromeでもスクレイピングが
可能になり個人的にも開発の幅を広げられたと思っています。
IEについてはサポートが終了でいているので今後は使用せずに切り替えていく必要があります。
先日のWindows10のアップデートでIEが削除されることが発表されたので早めの乗り換えをお勧めします。
やはり普段アプリを作成したりしている環境や言語を使用できるのは開発効率よく作成できるので
開発環境を整えられたのは非常によかったです。
是非みなさんもC#でのスクレイピングに挑戦してみてください。
スクレイピングを身に付けて楽にWebから情報を仕入れましょう。
それでは今回はこの辺で
管理人おすすめスクレイピング教材
スクレイピングに関して参考になりそうな動画コンテンツを紹介します。
こちらの動画コンテンツはSeleniumを使用したWebスクレイピングを学ぶことができます。
Seleniumを中心に学んでいきたいと考えている人におすすめです。
金額は税込15,600円です。

Selenium以外のライブラリついても学びたい場合はこちらも参考になるでしょう。
こちらは3つのライブラリを使用したスクレイピングを紹介しています。
それぞれに一長一短があるのでその部分を知る意味でもよいのではないでしょうか。
金額は税込14,400円です。

