DOBON.NET DOBON.NETプログラミング掲示板過去ログ

yahoo!briefcaseからダウンロード

環境/言語:[C# 2008 express,vista]
分類:[.NET]

大量の"非公開"設定のyahoo!briefcaseがあり、それらにあるファイルを効率よく更新チェック+ダウンロードしたいと思っています。
*非公開設定になっている場合、それぞれのyahoo idでログインしてからでないと、ファイルが見られません。
http://briefcase.yahoo.co.jp/

とりあえず、順番にログインしてhtmlを見られれば、正規表現でどうにかできそうだと思ったのですが、最初のログインしてファイルの一覧を得るところで躓いてしまいました。
Net.WebRequestでできますか?

アドバイスください!よろしくお願いします<m(__)m>
■No22413に返信(kiddさんの記事)
Yahoo!の場合、たぶんクッキーを使ったログインなのではないでしょうか。もしそうであれば、クッキーを保存しておけばできるでしょう。

クッキーについては、私のサイトでは、

Cookieを使ってファイルをダウンロードし表示する
http://dobon.net/vb/dotnet/internet/usecookie.html

で紹介しています。しかし、クッキーを使ったログインの方法に関しては、もっと詳しいところがあるかもしれませんので、調べてみてください。
http://www.atmarkit.co.jp/fdotnet/dotnettips/326cookie/cookie.html
の記事を参考に
ログインの部分を下のように変えるなどして、無事ログインできました。
管理人さんありがとうございました。

//ダウンロードするURL
string url = "http://login.yahoo.co.jp/";

//WebClientの作成
System.Net.WebClient wc = new System.Net.WebClient();
//文字コードを指定
wc.Encoding = System.Text.Encoding.GetEncoding(51932);
//HTMLソースをダウンロードする
string loginpage = wc.DownloadString(url);

// ログイン・ページへのアクセス
Hashtable vals = new Hashtable();

Regex actionregex = new Regex("<form method=post action=\"(?<action>[^\"]+)");
Match m = actionregex.Match(loginpage);
string login = m.Groups["action"].ToString();
Regex valregex = new Regex("<input type=hidden name=\"(?<name>[^\"]+)\" value=\"(?<value>[^\"]*)");
MatchCollection mc = valregex.Matches(loginpage);
foreach (Match item in mc)
{
vals[item.Groups["name"].ToString()] = item.Groups["value"].ToString();
}


vals["login"] = id;
vals["passwd"] = password;

return HttpPost(login, vals, cc);
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板