运行WebClient时出错。调试时没有错误

时间:2011-12-22 08:25:45

标签: c# c#-4.0 webclient webclient-download web-client

我正在尝试从网站上获取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:在Runnig中,首先捕获(获取数据)。调试时,第二个(正则表达式)

这是运行时生成的错误消息的图像。

正则表达式例外:

解析“DOCTYPE html html head meta charset =”utf-8“/ title sharpq home home page欢迎sharpq家庭工业培训项目指导研讨会深潜会议2011年12月22日上午7:58:18 / title meta http-equiv =“内容”content =“text / html; charset = utf-8“/ meta name =”description“content =”sharpq.com为大学生提供B.Tech和MCA培训,研讨会,classess,深度潜水课程和项目指导“/ meta name =”keywords“content =” sharpq.com,SharpQ Solutions,sharpq,职业提示,sharpq,sharpq解决方案,工业培训,指导,.net培训,asp.net培训,MCA培训,6个月培训,6周培训,项目指导,.net项目,asp .net研讨会,B。Tech。研讨会,B.Tech,kurukshetra,计算机研究所,计算机技术,深潜课程,设计课程,设计,设计研讨会,photoshop设计“/ link href =”/ Content / styles / base.css“rel =”stylesheet“type =“text / css”/ script src =“/ Scripts / jquery-1.5.1.min.js”type =“te ...” - [xy]范围的顺序相反。

这个 - [x-y]范围的顺序是相反的。

0 个答案:

没有答案