標準の関数で行う方法として有名な方法は
「WebBrowser」コントロールを使う方法が有名ですが
この方法を私はお勧めしません。
理由としては
- 裏でIEが立ち上がるため、メモリコストが高い
- 実際に解析を行う部分が、DocumentCompletedイベント内になるので
同期がとりにくく、コードが汚くなる
では、どうすべきか
私のお勧めは
Html Agility Pack
というライブラリを使用する事です。
ライブラリのインストール部分などは
リンクを参照していただければ、問題ないと思いますので
割愛します。
実際の使用例です
public static int LinkCounter(string url)
{
string q = "link:" + url;
string qurl = getYSTGetQuery(q, 10);
HtmlWeb hw = new HtmlWeb();
HtmlNode n = doc.GetElementbyId("inf");
string inf = n.InnerText;
int infstart = inf.IndexOf("約");
int infEnd = inf.LastIndexOf("件");
int length = infEnd - infstart;
if (length <= 0)
{
//MessageBox.Show(inf);
return 0;
}
string LinkCnt = inf.Substring(infstart+1, length-1);
return int.Parse(LinkCnt.Replace(",", ""));
}
public static string getYSTGetQuery(string keyword, int num)
{
return "http://search.yahoo.co.jp/search?p=" + HttpBeans.UrlEncode(keyword) +
"&n=" + num.ToString() + "&yuragi=on&search.x=1&fr=top_ga1_sa&tid=top_ga1_sa&ei=UTF-8";
}
LinkCounter("http://kgbnblog.blogspot.com")
こんな感じで使えます。
(Serpsは変更されるので、月日が経つとそのままでは使えないかもしれないです。)