Twitterでこの記事についてつぶやく

2010年2月25日木曜日

C#でHTML解析をしよう!Serpsを解析して被リンク数を得る関数を作る

C#でHTML解析を


標準の関数で行う方法として有名な方法は



「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は変更されるので、月日が経つとそのままでは使えないかもしれないです。)

0 件のコメント:

コメントを投稿