C#网页信息采集方法汇总

所属分类: 软件编程 / C#教程 阅读数: 85
收藏 0 赞 0 分享

本文实例总结了三种常用的C#网页信息采集方法。分享给大家供大家参考。具体实现方法如下:

一、通过HttpWebResponse 来获取

复制代码 代码如下:
public static string CheckTeamSiteUrl(string url) 

        string response = ""; 
        HttpWebResponse httpResponse = null; 
 
        //assert: user have access to URL  
        try 
        { 
            HttpWebRequest httpRequest = (HttpWebRequest)WebRequest.Create(url); 
            httpRequest.Headers.Set("Pragma", "no-cache"); 
 
                // request.Headers.Set("KeepAlive", "true"); 
 
                httpRequest.CookieContainer = new CookieContainer(); 
 
 
 
                httpRequest.Referer = url; 
 
                httpRequest.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727)"; 
 
               
 
            httpRequest.Credentials = System.Net.CredentialCache.DefaultCredentials; 
            httpResponse = (HttpWebResponse)httpRequest.GetResponse(); 
             
        } 
        catch (Exception ex) 
        { 
            throw new ApplicationException("HTTP 403 Access denied, URL: " + url, ex); 
        } 
 
        //if here, the URL is correct and the user has access  
        try 
        { 
            string strEncod = httpResponse.ContentType; 
            StreamReader stream; 
            if (strEncod.ToLower().IndexOf("utf") != -1) 
            { 
                stream = new StreamReader(httpResponse.GetResponseStream(), System.Text.Encoding.UTF8); 
            } 
            else 
            { 
                stream = new StreamReader(httpResponse.GetResponseStream(), System.Text.Encoding.Default); 
            } 
            
            char[] buff = new char[4000]; 
            stream.ReadBlock(buff,0,4000); 
            response = new string(buff); 
            stream.Close(); 
            httpResponse.Close(); 
        } 
        catch (Exception ex) 
        { 
            throw new ApplicationException("HTTP 404 Page not found, URL: " + url, ex); 
        } 
        return response; 
}

 
二、通过 WebResponse 来获取

复制代码 代码如下:
public static string getPage(String url) 
{
        WebResponse result = null; 
        string resultstring = ""; 
        try 
        { 
            WebRequest req = WebRequest.Create(url); 
            req.Timeout = 30000; 
            result = req.GetResponse(); 
            Stream ReceiveStream = result.GetResponseStream(); 
 
            //read the stream into a string 
            //StreamReader sr = new StreamReader(ReceiveStream, System.Text.Encoding.UTF8); 
            string strEncod = result.ContentType; 
            StreamReader sr; 
            if (strEncod.ToLower().IndexOf("utf") != -1) 
            { 
                sr = new StreamReader(ReceiveStream, System.Text.Encoding.UTF8); 
            } 
            else 
            { 
                sr = new StreamReader(ReceiveStream, System.Text.Encoding.Default); 
            } 
            resultstring = sr.ReadToEnd(); 
            js.alert(resultstring); 
            //Console.WriteLine(resultstring); 
        } 
        catch 
        { 
            throw new Exception(); 
        } 
        finally 
        { 
            if (result != null) 
            { 
                result.Close(); 
            } 
        } 
        return resultstring; 
}

 
三、通过WebClient来获取

复制代码 代码如下:
public string get(int length) 

        try 
        { 
            getEncodeing(); 
            WebClient wb = new WebClient(); 
            Stream response = wb.OpenRead(url); 
            StreamReader reader = new StreamReader(response, this.encoding, true, 256000); 
            char[] a = new char[length]; 
            int i  = reader.Read(a,0,length); 
            reader.Close(); 
            return new string(a); 
        } 
        catch (Exception e) 
        { 
            return e.Message; 
            //return null; 
        } 

private void getEncodeing() 
{
        switch (this.encode) 
        { 
            case "UTF-8": encoding = Encoding.UTF8; break; 
            case "GB2312": encoding = Encoding.GetEncoding("GB2312"); break; 
            case "ASCII": encoding = Encoding.ASCII; break; 
            default: encoding = Encoding.GetEncoding(encode); break; 
        } 
}

希望本文所述对大家的C#程序设计有所帮助。

更多精彩内容其他人还在看

C#抽象类与抽象方法详解

这篇文章主要为大家详细介绍了C#抽象类与抽象方法的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

C#代码实现扑克牌排序的几种方式

今天小编就为大家分享一篇关于C#代码实现扑克牌排序,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
收藏 0 赞 0 分享

C#泛型概念的简介与泛型的使用

今天小编就为大家分享一篇关于C#泛型概念的简介与泛型的使用,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
收藏 0 赞 0 分享

C# 7.0 使用下划线忽略使用的变量的原因分析

这篇文章主要介绍了C# 7.0 使用下划线忽略使用的变量的原因浅析,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享

C# 中使用正则表达式匹配字符的含义

正则表达式的作用用来描述字符串的特征。本文重点给大家介绍C# 中使用正则表达式匹配字符的含义,非常不错,具有一定的参考借鉴价值,需要的朋友参考下吧
收藏 0 赞 0 分享

C# Dictionary和SortedDictionary的简介

今天小编就为大家分享一篇关于C# Dictionary和SortedDictionary的简介,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
收藏 0 赞 0 分享

C#中SQL Command的基本用法

今天小编就为大家分享一篇关于C#中SQL Command的基本用法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
收藏 0 赞 0 分享

C#使用SQL DataReader访问数据的优点和实例

今天小编就为大家分享一篇关于C#使用SQL DataReader访问数据的优点和实例,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
收藏 0 赞 0 分享

C#使用SQL Dataset数据集代码实例

今天小编就为大家分享一篇关于的文章,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
收藏 0 赞 0 分享

C#使用SQL DataAdapter数据适配代码实例

今天小编就为大家分享一篇关于C#使用SQL DataAdapter数据适配代码实例,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
收藏 0 赞 0 分享
查看更多