C# 超手軽なスクレイピング
C#でスクレイピングをしようと思えば、普通は便利なライブラリを使用すると思う。
しかし、私は馬鹿なのでライブラリを理解してない。それなのに、スクレイピングをしたくなった。簡単にする方法があったので紹介する。
私のwindowsfoamappで使用したusing
using System;
using System.Windows.Forms;
using System.IO;
using System.Net;
using System.Text.RegularExpressions;
int i_data = new int [10];
string s_data = new string [10];
char[] del = { '<', '>' };
string s_url = "(取得したいURL)";
WebClient wc = new WebClient();
StreamReader sr = new StreamReader(wc.OpenRead(s_file));
{
for(int i = 1; i<= 35; i++)
{ sr.ReadLine(); }
//36行目の数字を取得
data[0] = int.Parse(Regex.Replace(sr.ReadLine(), @"[^0-9]", ""));
for (int i = 37; i <=110 ; i++)
{ sr.ReadLine(); }
//111行目の文字を取得
s_data = sr.ReadLine().Split(del);
}
label1.Text = i_data[0];
label2.Text = s_data[2];
今回の場合
htmlの36行目が、
<p class="progress_icon_b" id="item">1600体</p>
ならば、label1には"1600"が表示される。
htmlの111行目が、
<p class="rank">52位</p>
ならば、label2には"52位"が表示される。
htmlの形式が変わらないログイン認証もない簡単なhtmlであれば、これを応用することで簡単にスクレイピングができると思う。行数はhtmlをDLして行番号付きのエディターで開くと簡単にわかる。
ほかのよりごちゃごちゃしてるのかもしれないけど、簡単じゃない?これを思いいたので、今後は簡単なスクレイピングはやりやすいと思うのでメモとして残しておく。