用C#编写一个抓网页的应用程序

本文利用 C# .NET 提供的类来轻松创建一个抓取网页内容源代码的程序 HTTP WWW 进行数据访问最基本的协议之一,在 .NET 的基本类型库类中提供了两个对象类: HTTPWebRequest HTTPWebResponse ,分别用来向某资源发送请求和获得响应。为了得到一个资源的内容,我们先指定一个想要抓取的 URL 地址,用 HTTPWebRequest 对象进行请求,用 HTTPWebResponse 对象接收响应的结果,最后用 TextStream 对象来提取我们想要的信息,并在控制台打印出来。
下面就是看看如何实现这样的功能:

第一步:打开 VS.NET ,点 文件 ”-“ 新建 ”-“ 项目 ,项目类型选择 “Visual C# 项目 ,模板选 “Windows 应用程序
第二步:在 Form1 里加入 Label1 Button1,TextBox1,TextBox2 四个控件, TextBox2 Multiline 属性改为 True,
第三步:在 Form1 窗体上点击右键,选 查看代码 ,然后在最顶端输入:

using System.IO;
using System.Net;
using System.Text;

private void button1_Click(object sender,
System.EventArgs e)
{

}
的括号之间输入下面的代码:

byte[] buf = new byte[38192];
HttpWebRequest request = (HttpWebRequest)
WebRequest.Create(textBox1.Text);
HttpWebResponse response = (HttpWebResponse)
request.GetResponse();
Stream resStream = response.GetResponseStream();
int count = resStream.Read(buf, 0, buf.Length);
textBox2.Text = Encoding.Default.GetString(buf, 0,
count);
resStream.Close();

第四步:点 “Save all” 按钮,按 “F5” 运行应用程序,在 请输入 URL 地址: 后面的单行文本框里输入 http://lucky.myrice.com/down.htm ,点击 得到 HTML 代码 按钮,就可以看到该地址的代码了!

下面,我们就对上面的程序做一个分析:

上面的这个程序的功能是抓取网页 http://lucky.myrice.com/down.htm 的内容,并在多行文本框里显示出 HTML 代码,由于返回的数据是字节类型的,因此,我们创建一个名为 buf 的字节类型的数组变量来存储请求返回来的结果,其中数组的大小与我们要请求返回的数据大小有关系。首先,我们实例化 HttpWebRequest 对象,使用 WebRequest 类的静态方法 Create() ,该方法的字符串参数就是我们要请求页面的 URL 地址,由于 Create() 方法返回的是 WebRequest 类型的,我们必须对它进行造型(即类型转换)成 HttpWebRequest 类型,再赋给 request 变量。一旦我们建立了 HttpWebRequest 对象,就可以使用它的 GetResponse() 方法来返回一个 WebResponse 对象,然后再造型成 HttpWebResponse 对象赋给 response 变量。现在,就可以使用 response 对象的
GetResponseStream()
方法来得到响应的文本流了,最后用 Stream 对象的 Read() 方法把返回的响应信息放到我们最初创建的字节数组 buf 中, Read() 3 个参数,分别是:要放入的字节数组,字节数组的开始位置,字节数组的长度。最后把字节转换成字符串,注意:这里采用的采用的是 Default 编码,它使用默认的编码方式,我们就不用再进行字符编码之间的转换了。也可以利用 WebRequest WebResponse 实现以上的功能,代码如下:

WebRequest request = WebRequest.Create(textBox1.Text);
WebResponse response =request.GetResponse();

输入其它的 URL 看看是不是很方便!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值