Web サイトから HTML を取得しようとしています。WebClient を使用して正常にフェッチできますが、コードをデバッグしている場合のみです。ctrl+f5 を押すと、エラーが発生してシャットダウンします。なんで?
コードは次のとおりです。
string input = " a href=\"/.* .* /a "; //spaces because < and > will be removed soon.
List<string> matchedlinks = new List<string>();
WebClient wc = new WebClient();
wc.BaseAddress = "http://www.sharpq.com";
wc.Headers.Add("user-agent", @"Mozilla/5.0 (Windows NT 6.0; rv:8.0.1)
Gecko/20100101 Firefox/8.0.1");
Uri baseUri = new Uri("http://www.sharpq.com");
wc.Proxy = null;
string data = "error";
Uri nurl = new Uri("http://www.sharpq.com");
try
{
Stream s = wc.OpenRead(baseUri);
StreamReader sr = new StreamReader(s);
StringBuilder sb = new StringBuilder(sr.ReadToEnd());
data = sb.ToString();
Console.WriteLine(data);
}
catch (System.Net.WebException webexp)
{
Console.WriteLine("Error: " + webexp.Message);
}
catch (Exception ex)
{
Console.WriteLine("Error: " + ex.Message);
}
data=data.Replace('>', ' ').Replace('<', ' ');
if (!data.Equals("error"))
{
try
{
Regex regex = new Regex(data, RegexOptions.IgnoreCase);
foreach (Match m in regex.Matches(input))
{
matchedlinks.Add(m.ToString());
}
}
catch (ArgumentException argx)
{
Console.WriteLine("error: " + argx.Message);
}
}
string query = @"Insert into scriptor_w3schools_Data(rawData, linksData) values (@raw, @links)";
SqlCommand cmd = new SqlCommand(query, scriptor_Connection);
cmd.CommandType = System.Data.CommandType.Text;
cmd.Parameters.Add("@raw", System.Data.SqlDbType.Text).Value = data;
cmd.Parameters.Add("@links", System.Data.SqlDbType.Text).Value = "";
foreach(string s in matchedlinks)
cmd.Parameters["@links"].Value += s;
connect();
try
{
cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
disconnect();
cmd.Dispose();
それはいつも起こっています。実行すると、サイトからデータを取得できません。デバッグすると、データがフェッチされますが、正規表現は引数が間違っているなどのエラーをスローします。
WebClientの時間制限が原因である可能性があると考えています。そうですか?どうすればデータを取得できますか。DownloadString と同じことを試しました。
編集 1: 実行中に、最初にキャッチ (データのフェッチ) します。デバッグ中、2つ目(正規表現)
これは、実行中に生成されたエラーメッセージの画像です。
正規表現の例外:
解析 " DOCTYPE html html head meta charset="utf-8" / タイトル" content="テキスト/html; charset=utf-8" / meta name="description" content="sharpq.com は、大学生向けに B.Tech および MCA のトレーニング、ワークショップ、クラス、詳細なセッション、プロジェクト ガイダンスを提供しています" / meta name="keywords" content=" Sharpq.com、SharpQ ソリューション、sharpq、キャリア キュー、sharpq、sharpq ソリューション、産業トレーニング、コーチング、.net トレーニング、asp.net トレーニング、MCA トレーニング、6 か月トレーニング、6 週間トレーニング、プロジェクト ガイダンス、.net プロジェクト、asp .net ワークショップ、B. Tech. ワークショップ、B.Tech、kurukshetra、コンピュータ研究所、コンピュータ技術、ディープ ダイブ セッション、
これは何ですか- [xy] 範囲の逆順。?