プロが教える店舗&オフィスのセキュリティ対策術

ボタンをクリックしてYahooサーチでページのHTMLを取得、
取得したHTMLから「急上昇ワード」のテキスト部分を抜き取って
Listboxに一覧表示したいのですが上手くいきません。

private void button1_Click(object sender, EventArgs e)
{
string ss取得キーワード = "";

WebClient wc = new WebClient();

try
{
wc.Encoding = Encoding.UTF8; // エンコード
string html = wc.DownloadString("https://search.yahoo.co.jp/");

string mac = Regex.Match(html, @"<div class=""itm"">.*?<\/div>",
RegexOptions.IgnoreCase | RegexOptions.Singleline).Value.ToString();

if (mac != "") // 上記の正規表現で結果が返ってきたら(急上昇ワードがあったら)
{
// 正規表現を使って、<a>タグのテキスト部分を取り出す
MatchCollection mcl = Regex.Matches(mac, @"<a[^>]*>(?<text>.*?)<\/a>",
RegexOptions.IgnoreCase | RegexOptions.Singleline);

// 上記の正規表現で取り出した内容を1件ずつ繰り返し処理で読込む
foreach (Match wk_mac in mcl)
{
// ラベル名「text」のデータを文字列に変換して変数に格納
ss取得キーワード = wk_mac.Groups["text"].ToString();

listbox1.Items.Add(ss取得キーワード); // リストボックスに表示する
}
}
}
catch (WebException exc)
{
lbox_TK調査結果.Text += exc.Message;// ここが原因?
}
}

どこがいけないのか教えて頂けたら助かります。
よろしくお願いいたします。

A 回答 (1件)

>lbox_TK調査結果.Text += exc.Message;// ここが原因?



で、exc.Messageにはなんと入っていました?

>string mac = Regex.Match(html, @"<div class=""itm"">.*?<\/div>",
>RegexOptions.IgnoreCase | RegexOptions.Singleline).Value.ToString();

こういう書き方は私自身はやりませんけど…
# 普通にエスケープする
http://ufcpp.net/study/csharp/st_embeddedtype.ht …
ということで、有り…ではあるようで……。

ステップ実行などでどこまで進めているのか。
も調べてみてはどうですかね?
    • good
    • 0
この回答へのお礼

ありがとうございます。

ステップ実行してみたところ、「html」に
入っているHTMLを見たら正常なものでは
ありませんでした。
なんでやろ?
質問以前の問題ですね。

お礼日時:2017/09/25 13:21

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!