当前位置:首页 > Windows程序 > 正文

C# .net 抓取网页内容

2021-03-26 Windows程序

ASP.NET 中抓取网页内容是非常方便的,而其中更是解决了 ASP 中困扰我们的编码问题。

1、抓取一般内容

需要三个类:WebRequest、WebResponse、StreamReader

所需命名空间:System.Net、System.IO

核心代码:

WebRequest 类的 Create 为静态方法,参数为要抓取的网页的网址;

Encoding 指定编码,Encoding 中有属性 ASCII、UTF32、UTF8 等全球通用的编码,但没有 gb2312 这个编码属性,所以我们使用 GetEncoding 获得 gb2312 编码。

[c-sharp] view plaincopy

private string GetGeneralContent(string strUrl)  

    {  

        string strMsg = string.Empty;  

        try  

        {  

            WebRequest request = WebRequest.Create(strUrl);  

            WebResponse response = request.GetResponse();  

            StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding("gb2312"));  

  

            strMsg = reader.ReadToEnd();  

  

            reader.Close();  

            reader.Dispose();  

            response.Close();  

        }  

        catch  

        { }  

        return strMsg;  

    }  

2、抓取图片或其它二进制文件(如文件)

需要四个类:WebRequest、WebResponse、Stream、FileStream

所需命名空间:System.Net、System.IO

核心代码:用Stream读取

[c-sharp] view plaincopy

private string GetFileContent(string strUrl)  

    {  

        string strMsg = string.Empty;  

        try  

        {  

            WebRequest request = WebRequest.Create(strUrl);   

            WebResponse response = request.GetResponse();   

            Stream reader = response.GetResponseStream();   

              

            //可根据实际保存为具体文件  

            FileStream writer = new FileStream("D://logo.gif", FileMode.OpenOrCreate, FileAccess.Write);   

            byte[] buff = new byte[512];   

            int c = 0; //实际读取的字节数   

            while ((c=reader.Read(buff, 0, buff.Length)) > 0)   

            {   

                writer.Write(buff, 0, c);   

            }   

            writer.Close();   

            writer.Dispose();   

               

            reader.Close();   

            reader.Dispose();   

            response.Close();  

  

            strMsg = "保存成功";  

        }  

        catch  

        { }  

        return strMsg;  

    }  

3、抓取网页内容  POST方式

温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/68166.html