解决方案 »

  1.   


    #region 范例
    //抓取的就是这个地址http://www.baidu.com/s?ie=utf-8&bs=aa&f=8&rsv_bp=1&rsv_spt=3&wd=%E7%88%B1%E7%BE%8E%E4%B8%BD&rsv_sug3=8&rsv_sug=0&rsv_sug1=7&rsv_sug4=272&inputT=3873 这个百度搜索结果页面的如【imis.tmall.com/ 20小时前】中的URL的集合。 
    public static IList<string> GetUrls()
    {
       WebClient MyWebClient = new WebClient();
       MyWebClient.Credentials = CredentialCache.DefaultCredentials;//获取或设置用于向Internet资源的请求进行身份验证的网络凭据
       Byte[] pageData = MyWebClient.DownloadData("http://www.baidu.com/s?ie=utf-8&bs=aa&f=8&rsv_bp=1&rsv_spt=3&wd=%E7%88%B1%E7%BE%8E%E4%B8%BD&rsv_sug3=8&rsv_sug=0&rsv_sug1=7&rsv_sug4=272&inputT=3873"); //从指定网站下载数据
        //string pageHtml = Encoding.Default.GetString(pageData);  //如果获取网站页面采用的是GB2312,则使用这句            
        string pageHtml = Encoding.UTF8.GetString(pageData); //如果获取网站页面采用的是UTF-8,则使用这句
       string test = @"(?isx)<span[^>]*class=""g"">(?><span[^*]class=""g"">(?<O>)|</sapn>(?<-O>)|(?:(?!</?span\b).)*)*(?(O)(?!))</span>";
       Regex reg = new Regex(test);
       MatchCollection mc = reg.Matches(pageHtml);
       IList<string> urlList = new List<string>();
       foreach (Match m in mc)
       {
           urlList.Add(Regex.Match(m.ToString(), @"(?<=<span[^>].*class=""g"">).*(?=</span>)").ToString());
        }
        return urlList;
    }
    #endregion
      

  2.   

    谢谢sibiyellow的回复,出现 远程服务器返回错误: (407) 需要代理身份验证。
      

  3.   

    用webbroswer控件,应该能搞到吧,
      

  4.   

    简单的方式
    用webBrowser,打开网页
    myWebBrowser.Navigate(strUrl);在DocumentCompleted事件中获取源码
    myWebBrowser.Document.Body.OuterHtml之类的然后看源码规律获取想要的信息