我正在尝试从网站获取 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:在运行时,首先捕获(获取数据)。调试时,第二个(正则表达式)
这是运行它时生成的错误消息的图像。
正则表达式异常:
解析" DOCTYPE html html head meta charset="utf-8" / title " 内容="文本/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] 范围以相反的顺序。?