動機
少し前から興味があったのと、依頼を受けたのでC#でWebスクレイピングを試してみました。最近は、色々なツールがあるのでやりやすくなってます。
ツールと成果物
今回はNugetで AngleSharpと、Selenium(Web driver とChrome driver)を取得してやってみました。
初めてなので、 Seleniumで ChromeにWeb表示させて、AngleSharpを解析させましたが、慣れたらAngleSharpだけでも行けそうです。
上記のようにした理由としては、
① IDとPWDを入力させるのにSeleniumの方が簡単そうだったのと、動いてっぞ!という感じが出てよいのでこうしました。(実際に目でみて確認できる。)
②日本語資料として、Selenium > AngleSharpだったので、ログインとかのための資料が分かりにくかった。(初めAnglesharpから始めたのですが、そこがわかりにくかったので、Selenium導入。今ならこことかをじっくり見たらわかる気がします。)
出来上がりはこんな感じ。開始を押すとchromdriver.exe(か?)のコマンドラインが開き、Chromeを起動、IDとパスワード入れて、Webページのデータを収集していきます。
ちなみに、今まで.exe.configをソフトに同梱させたことはなかったのですが、何か情報が.exe.configにも書かれている模様。追求はしてませんが、これで動くようになったので次回以降困ることがあったら、ここら辺を追求していきたいと思います。
スクレイピングについて
スクレイピング自体は情報解析のためであり(*1)、スクレイピング対象がAPI廃止になったサービスということもあり、アクセス数はなるべく少なくなる様に心掛けたり(*2)が必要かと思います。RPAソフトとかでもスクレイピングできるよって言っているけど気を付けたいところではあります。プロキシサーバーとか抜け道はあるかと思いますが。。費用が追加で必要になるので。
(*1) 著作権とか、(*2)動産侵入とかです。
ツールのライセンス
Selenium Web driver: APACHE LICENSE, VERSION 2.0
→ 『Apache License 2.0とは?』の解説が分かりやすいですね。