5行で作れるスクレイピングプログラム(C#, Chrome)

時々、社内で「このサイトに表示されているデータが欲しいんだけど」「毎回サイトを開いて確認するのがしんどくなってきた」と言ったような意見を聞きます。
ここでエンジニアならスクレイピングツールを作って自動化してあげようと考えます、
しかし、サイトのスクレイピングでは以下の問題が発生します。
「サイトの構成が古すぎてデータを上手く取得することができない」
「サイトのレイアウトの更新頻度が多くて取得箇所の指定が大変」
これ以外にも多くの問題が存在しております。

今回は「C#」と「Chrome ブラウザ」を利用した、
簡単に作れるスクレイピングプログラムを紹介したいと思います。

今回の目的は「なるべく簡単に作成する」となっております。
そこで通常のスクレイピングでは
「XPath」(XMLに準拠した文書の特定の部分を指定する言語構文)や
「Selector」(HTML文書内から処理対象とする要素の選択構文)
という構文を自分で書かないといけないのですが、
この作業は「Chrome ブラウザ」に搭載されている「デバッグツール」で自動作成する事が出来るので、
後は作成された構文をソースコードに張り付けるだけで実装できます。

前提知識

必要なステップは大きく分けて2つ

  1. ChromeでSelector文の作成
  2. プログラムの実装

プログラムで利用するSelector文の作成

ChromeでSelector文の作成

スクレイピングテストのサイトで対象のデータに対して、
右クリックを行いサブメニューから「検証」を選択します。

「デバッグツール」画面では対象のデータに該当する「HTMLタグ」の行に対して、
右クリックを行いサブメニューから「Copy」の「Copy selector」を選択します。
「Selector文」をメモ帳などにコピーしてください。(プログラムで使います)

プログラムの実装

メインプログラムの作成

メインプログラムを実装していきます。

プログラムを実行する上で必要になるNUGETを追加してください。
AngleSharp

プログラム内の「取得対象の設定」の変数に対しては、
「htmlUrl」にスクレイピング対象サイトの「URL」を指定してください。
「querySelector」にスクレイピング箇所の「Selector文」を指定してください。

まとめ

「AngleSharp」を利用すれば5行のソースコードでスクレイピングを実装することができます。
「Chrome ブラウザ」の「デバッグツール」を利用すれば、スクレイピング対象の「Selector文」を自動生成することができるので構文を書かなくて済みます。
構文を一瞬で作成することが出来るという事は、
サイトが頻繁にレイアウトを変えても、
タグの構造が整理されていなくても、
すぐにプログラムを更新して対応することが可能になります。

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください