用 C#编写一个抓网页的应用程序
作者: 发表时间: 2003-7-13 10:13:07
本文利用 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();
第四步:点 “Saveall ”按钮,按 “F5”运行应用程序,在 “请输入 URL 地址: ”后面的单行文本框里输入 /down.htm ,点击 “得到 HTML 代码 ”按钮,就可以看到该地址的代码了!
下面,我们就对上面的程序做一个分析:
上面的这个程序的功能是抓取网页
/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 看看是不是很方便!
C# 编码标准--编码习惯 cuike519 (翻译)
避免将多个类放在一个文件里面。
一个文件应该只有
您可能关注的文档
- 2009年中考物理专题复习--填空题(52页)(一).docx
- 2011-2012年北京市高考英语一模、二模完型填空汇总与答案实用版.docx
- 2012年高考数学必考考点题型大盘点.docx
- 2013年中考数学复习选择题填空题专题训练精选1.docx
- 2014届高考化学总复习_智能考点归类总结(教材精讲+典型例题+跟踪训练)氧化还原反应(含方法提示和解析).docx
- 2014年中考物理二模试卷填空题解析.docx
- 2014深圳中考科学热门考点.docx
- 2016届高三物理《考点归纳总结》人教版一轮复习第七章恒定电流单元小结练[来源:学优高考网259584].docx
- 2016年中考英语模拟试题汇编:短文填空.docx
- 2017年中考英语完型填空提高训练二(含答案).docx
最近下载
- 半导体封装流程完整PPT课件.pptx VIP
- 四川省高职单招大纲英语词汇2500词音标素材.docx VIP
- 中国音乐史与名作欣赏 课件-第二十讲.ppt VIP
- 深圳市城市轨道交通第四期建设规划调整(2017-2022)》环境影响评价报告书.pdf VIP
- 扬职大2025单招试卷 .pdf VIP
- 清华大学微电子封装技术 外壳选择及封装设计基础.pdf VIP
- 2021-2025年高考数学真题 导数及其应用(解答题)8种常见考法归类(解析版).pdf
- 春节习俗的现代转变.pptx VIP
- Schneider Electric施耐德TeSys T LTMR 电机管理控制器 以太网通讯指南(中文).pdf
- 电缆网络图识读信号工程施工课件.pptx VIP
原创力文档

文档评论(0)