C#获取网页内容的三种方式

搜索网络,发现C#通常有三种方法获取网页内容,使用WebClient、WebBrowser或者HttpWebRequest/HttpWebResponse。。。

方法一:使用WebClient (引用自:http://fbljava.blog.163.com/blog/static/[***********]145244/)

static void Main(string[] args)

{

try {

WebClient MyWebClient = new WebClient();

MyWebClient.Credentials = CredentialCache.DefaultCredentials;//获取或设置用于向Internet资源的请求进行身份验证的网络凭据

Byte[] pageData = MyWebClient.DownloadData(“http://www.163.com”); //从指定网站下载数据

string pageHtml = Encoding.Default.GetString(pageData);  //如果获取网站页面采用的是GB2312,则使用这句

//string pageHtml = Encoding.UTF8.GetString(pageData); //如果获取网站页面采用的是UTF-8,则使用这句

Console.WriteLine(pageHtml);//在控制台输入获取的内容

using (StreamWriter sw = new StreamWriter("c:\\test\\ouput.html"))//将获取的内容写入文本

{

sw.Write(pageHtml);

}

Console.ReadLine(); //让控制台暂停,否则一闪而过了

}

catch(WebException webEx) {

Console.WriteLine(webEx.Message.ToString());

}

}

方法二:使用WebBrowser (引用自:http://topic.csdn.net/u/20091225/14/4ea221cd-4c1e-4931-a6db-1fd4ee7398ef.html)

WebBrowser web = new WebBrowser();

web.Navigate("http://www.xjflcp.com/ssc/");

web.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(web_DocumentCompleted);

void web_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)

{

WebBrowser web = (WebBrowser)sender;

HtmlElementCollection ElementCollection = web.Document.GetElementsByTagName("Table");

foreach (HtmlElement item in ElementCollection)

{

File.AppendAllText("Kaijiang_xj.txt", item.InnerText);

}

}

方法三:使用HttpWebRequest/HttpWebResponse (引用自:http://hi.baidu.com/onlyafar/blog/item/7ac4c6bf92d4810019d81f98.html)

HttpWebRequest httpReq;

HttpWebResponse httpResp;

string strBuff = "";

char[] cbuffer = new char[256];

int byteRead = 0;

string filename = @"c:\log.txt";

///定义写入流操作

public void WriteStream()

{

Uri httpURL = new Uri(txtURL.Text);

///HttpWebRequest类继承于WebRequest,并没有自己的构造函数,需通过WebRequest的Creat方法 建立,并进行强制的类型转换

httpReq = (HttpWebRequest)WebRequest.Create(httpURL);

///通过HttpWebRequest的GetResponse()方法建立HttpWebResponse,强制类型转换

httpResp = (HttpWebResponse) httpReq.GetResponse();

///GetResponseStream()方法获取HTTP响应的数据流,并尝试取得URL中所指定的网页内容

///若成功取得网页的内容,则以System.IO.Stream形式返回,若失败则产生ProtoclViolationException错 误。在此正确的做法应将以下的代码放到一个try块中处理。这里简单处理

Stream respStream = httpResp.GetResponseStream();

///返回的内容是Stream形式的,所以可以利用StreamReader类获取GetResponseStream的内容,并以

StreamReader类的Read方法依次读取网页源程序代码每一行的内容,直至行尾(读取的编码格式:UTF8)

StreamReader respStreamReader = new StreamReader(respStream,Encoding.UTF8);

byteRead = respStreamReader.Read(cbuffer,0,256);

while (byteRead != 0)

{

string strResp = new string(cbuffer,0,byteRead);

strBuff = strBuff + strResp;

byteRead = respStreamReader.Read(cbuffer,0,256);

}

respStream.Close();

txtHTML.Text = strBuff;

}

搜索网络,发现C#通常有三种方法获取网页内容,使用WebClient、WebBrowser或者HttpWebRequest/HttpWebResponse。。。

方法一:使用WebClient (引用自:http://fbljava.blog.163.com/blog/static/[***********]145244/)

static void Main(string[] args)

{

try {

WebClient MyWebClient = new WebClient();

MyWebClient.Credentials = CredentialCache.DefaultCredentials;//获取或设置用于向Internet资源的请求进行身份验证的网络凭据

Byte[] pageData = MyWebClient.DownloadData(“http://www.163.com”); //从指定网站下载数据

string pageHtml = Encoding.Default.GetString(pageData);  //如果获取网站页面采用的是GB2312,则使用这句

//string pageHtml = Encoding.UTF8.GetString(pageData); //如果获取网站页面采用的是UTF-8,则使用这句

Console.WriteLine(pageHtml);//在控制台输入获取的内容

using (StreamWriter sw = new StreamWriter("c:\\test\\ouput.html"))//将获取的内容写入文本

{

sw.Write(pageHtml);

}

Console.ReadLine(); //让控制台暂停,否则一闪而过了

}

catch(WebException webEx) {

Console.WriteLine(webEx.Message.ToString());

}

}

方法二:使用WebBrowser (引用自:http://topic.csdn.net/u/20091225/14/4ea221cd-4c1e-4931-a6db-1fd4ee7398ef.html)

WebBrowser web = new WebBrowser();

web.Navigate("http://www.xjflcp.com/ssc/");

web.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(web_DocumentCompleted);

void web_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)

{

WebBrowser web = (WebBrowser)sender;

HtmlElementCollection ElementCollection = web.Document.GetElementsByTagName("Table");

foreach (HtmlElement item in ElementCollection)

{

File.AppendAllText("Kaijiang_xj.txt", item.InnerText);

}

}

方法三:使用HttpWebRequest/HttpWebResponse (引用自:http://hi.baidu.com/onlyafar/blog/item/7ac4c6bf92d4810019d81f98.html)

HttpWebRequest httpReq;

HttpWebResponse httpResp;

string strBuff = "";

char[] cbuffer = new char[256];

int byteRead = 0;

string filename = @"c:\log.txt";

///定义写入流操作

public void WriteStream()

{

Uri httpURL = new Uri(txtURL.Text);

///HttpWebRequest类继承于WebRequest,并没有自己的构造函数,需通过WebRequest的Creat方法 建立,并进行强制的类型转换

httpReq = (HttpWebRequest)WebRequest.Create(httpURL);

///通过HttpWebRequest的GetResponse()方法建立HttpWebResponse,强制类型转换

httpResp = (HttpWebResponse) httpReq.GetResponse();

///GetResponseStream()方法获取HTTP响应的数据流,并尝试取得URL中所指定的网页内容

///若成功取得网页的内容,则以System.IO.Stream形式返回,若失败则产生ProtoclViolationException错 误。在此正确的做法应将以下的代码放到一个try块中处理。这里简单处理

Stream respStream = httpResp.GetResponseStream();

///返回的内容是Stream形式的,所以可以利用StreamReader类获取GetResponseStream的内容,并以

StreamReader类的Read方法依次读取网页源程序代码每一行的内容,直至行尾(读取的编码格式:UTF8)

StreamReader respStreamReader = new StreamReader(respStream,Encoding.UTF8);

byteRead = respStreamReader.Read(cbuffer,0,256);

while (byteRead != 0)

{

string strResp = new string(cbuffer,0,byteRead);

strBuff = strBuff + strResp;

byteRead = respStreamReader.Read(cbuffer,0,256);

}

respStream.Close();

txtHTML.Text = strBuff;

}


相关文章

  • net互联网软件开发工程师 new-2
  • .NET互联网软件开发工程师 岗位描述: 字不能放在变量名首位 8.C# 数组从零开始建立索引,即数组索引从零开始.C# 中数组的工作方式与在大多数其他流行语言中的工作方式类似.但还有一些差异应引起注意. 声明数组时,方括号 ([]) 必须 ...查看


  • Web程序设计沈士根版课后习题答案
  • Web考试复习资料 第一章 1.填空题 (1).NET Framework主要包括 公共语言运行库(CLR) 和 类库 (2)ASP.NET网站在编译时,首先将语言代码编译成 MSIL,微软中间语言 (3)一台IIS Web服务器IP地址为 ...查看


  • 学习C#前必需了解的内容
  • C#数据库开发论文 2010-11-19 20:23 学习C#前必需了解的内容: 1.              C#与.NET 的关系,C#的结构和方法论反映了.NET基础方法论,在许多情况下C#的特定动能取决于.NET的功能或.NET类 ...查看


  • 联通笔试题
  • 选择题 1.通信网的基本结构形式有五种,以下正确的说法是(C) A.网型.星型.树型.环型.总线型: B.网型.星型.线型.复合型.环型: C.网型.星型.复合型.环型.总线型: D.网型.环型.线型.复合型.树型. 2.N个节点完全互联的 ...查看


  • 网上书店管理系统的设计与实现111111
  • 安徽职业技术学院 毕 业 论 文 课题名称: 学生姓名: 学 号 : 专 业: 班 级: 指导教师: 2012年5 月 1 目 录 一.需求分析„„„„„„„„„„„„„„„„„„„„„„„„„„„„4 1.1开发该系统的依据及意义„„„„ ...查看


  • 火车站售票系统
  • JIANGSU TEACHERS UNIVERSITY OF TECHNOLOGY 本科毕业设计(论文) 基于ASP.NET的火车站售票系统 学院名称: 东方学院 专 业: 软件工程 班 级: 08东软件2 姓 名:指导教师姓名: 陈林凯 ...查看


  • 毕业设计:基于JSP的留言簿系统的设计与制作
  • 编号 毕业设计论文 题目: 留言簿系统的设计与制作 摘 要 Internet是目前世界上最大的计算机互联网络,它遍布全球,将世界各地各种规模的网络连接成一个整体.作为Internet上一种先进的,易于被人们所接受的信息检索手段,World ...查看


  • 企业信息系统运行状态监控与管理
  • 企业信息系统运行状态监控与管理的信息化 在企业内部运行着许多信息系统,信息系统管理员的主要工作之一就是负责这些系统的运行状态监控与管理,这也是信息系统管理员的日常工作.然而在实际工作中,系统管理员往往疏于日常监控与管理,只是在出现故障时才疲 ...查看


  • c# 进程间通信
  • c# 进程间通信 一.进程间通讯的方式 进程间通讯的方式有很多,常用的有共享内存(内存映射文件.共享内存DLL.剪切板等).命名管道和匿名管道.发送消息等几种方法来直接完成,另外还可以通过socket口.配置文件和注册表等来间接实现进程间数 ...查看


热门内容