页面这个页面我抓取后的源码是Forbidden, Please turn off CC,但是浏览器来打开是一个正常的页面,求高手给详细代码,谢谢

解决方案 »

  1.   

    private string GetWebContent(string Url)   
    {   
    string strResult="";   
    try   
    {   
    HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url);   
        //声明一个HttpWebRequest请求   
    request.Timeout = 30000;   
    //设置连接超时时间   
    request.Headers.Set("Pragma", "no-cache");   
    HttpWebResponse response = (HttpWebResponse)request.GetResponse();   
    Stream streamReceive = response.GetResponseStream();   
    Encoding encoding = Encoding.GetEncoding("GB2312");   
    StreamReader streamReader = new StreamReader(streamReceive, encoding);   
    strResult = streamReader.ReadToEnd();   
    }   
    catch   
    {   
    MessageBox.Show("出错");   
    }   
    return strResult;   
    }   给你找来了。自己传个URL就行了。返回的是整个页面的源代码.至于详细的信息靠你自己来截取  可以用正则可以用INDEXOF SUBSTRING。 
      

  2.   

    http://www.gzcycling.com/bbs/read.php?tid=49628&page=2你用这个地址抓去下试试,   看能不能正确抓取源码?如果这么简单我就不会来问了
      

  3.   

    通过HttpWebResponse.StatusCode属性查看
    Forbidden 等效于 HTTP 状态 403。Forbidden 指示服务器拒绝满足请求
    System.Net.HttpWebRequest request = (System.Net.HttpWebRequest)System.Net.WebRequest.Create(url);   
      request.UserAgent = "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)";   
      System.Net.WebResponse response = request.GetResponse();   
      System.IO.Stream resStream = response.GetResponseStream();   
      System.IO.StreamReader sr = new System.IO.StreamReader(resStream, encoding);   
      string html = (sr.ReadToEnd());   
      resStream.Close();   
      sr.Close();
      

  4.   

    这种情况我遇到过,那是因为你发送的请求头部和浏览器的不一致
    在HttpWebRequest的实例后面加上这句就OK
    实例名.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)"
      

  5.   

    说漏了
    实例名.UserAgent = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; EmbeddedWB 14.52 from: http://www.bsalsa.com/ EmbeddedWB 14.52; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)"
      

  6.   

    你请求的站点加了cc攻击保护,
    代码稍作修改就可以了请求实例.UseDefaultCredentials = true;
    请求实例.Headers.Set("User-Agent", "Microsoft Internet Explorer");
      

  7.   


    string strResult = "";            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url);
                //声明一个HttpWebRequest请求   
                request.Timeout = 10000;
                //设置连接超时时间   
                request.Headers.Set("Pragma", "no-cache");
                request.UseDefaultCredentials = true;
                request.UserAgent = "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.2; Trident/4.0; GTB6.5; Foxy/1; .NET CLR 1.1.4322; InfoPath.2; .NET CLR 3.0.04506.648; CIBA; .NET CLR 3.5.21022; .NET CLR 2.0.50727; msn OptimizedIE8;ENUS)";
                request.Accept = "image/gif, image/jpeg, image/pjpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, application/x-ms-application, application/x-ms-xbap, application/vnd.ms-xpsdocument, application/xaml+xml, application/QVOD, application/QVOD, image/png, */*";
                request.Headers.Set("Accept-Encoding", "gzip, deflate");
                request.Headers.Set("Accept-Language", "zh-cn,en-GB;q=0.5");
                HttpWebResponse response = (HttpWebResponse)request.GetResponse();
                Stream streamReceive = response.GetResponseStream();
                Encoding encoding = Encoding.GetEncoding("GB2312");
                StreamReader streamReader = new StreamReader(streamReceive, encoding);
                strResult = streamReader.ReadToEnd();            return strResult;有谁测试过每次都抓取成功没有?http://www.gzcycling.com/bbs/read.php?tid=49628&page=2