本节主要来介绍一下,在C#中制造爬虫,最为常见、常用、实用的基础类 ------ WebRequest、WebResponse。

先来看一个示例 [1.2.1]:

 1     using System;
 2     using System.IO;
 3     using System.Net;
 4     using System.Text;
 5
 6     class Program
 7     {
 8         static void Main(string[] args)
 9         {
10             var request = WebRequest.Create(@"https://www.cnblogs.com/mikecheers/p/12090487.html");
11             request.Method = "GET";
12             using (var response = request.GetResponse())
13             {
14                 using (var stream = response.GetResponseStream())
15                 {
16                     using (var reader = new StreamReader(stream, new UTF8Encoding(false)))
17                     {
18                         var content = reader.ReadToEnd();
19                         Console.WriteLine(content);
20                     }
21                 }
22                 response.Close();
23             }
24             request.Abort();
25             Console.ReadLine();
26         }
27     }

运行以上代码,我们能看到类似如下的输出:

{省略若干html代码}
<div id="cnblogs_post_body" class="blogpost-body "> <p>  在构建本章节内容的时候,笔者也在想一个问题,究竟什么样的采集器框架,才能算得上是一个&ldquo;全能&rdquo;的呢?就我自己以往项目经历而言,可以归纳以下几个大的分类:</p> <ol> <li>根据通讯协议:HTTP的、HTTPS的、TCP的、UDP的;</li> <li>根据数据类型:纯文本的、json的、压缩包的、图片的、视频的;</li> <li>根据更新周期:不定期更新的、定期更新的、增量更新的;</li> <li>根据数据来源:单一数据源、多重数据源、多重数据源混合;</li> <li>根据采集点分布:单机的,集群的;</li> <li>根据反爬虫策略:控制频率的,使用代理的,使用特定UA的;</li> <li>根据配置:可配置的,不可配置的;</li> </ol> <p>  以上的分类,也有可能不够全面,不过应该可以涵盖主流数据采集的分类了。</p> <p>  为了方便阐述一个爬虫的工作原理,我们从上面找到一条最简单路径,来进行阐述(偷奸耍滑?非也,大道化简,万变不离其宗:)</p> <p>  OK,一个小目标,单机、单一数据源、定期更新、纯文本、HTTP的爬虫,来一只。</p> <p>&nbsp;</p> <p style="margin-left: 30px;">在第一境的后面各节中,我们就来逐步实现这个小目标,同时,也来探究一下其中的原理。只有掌握了这些,才能通过继续扩展,衍生出强大的爬虫:)</p> </div>

{省略若干html代码}

一只爬虫小幼崽儿,就如此轻松的诞生了~

示例 [1.2.1]中,最核心的部分,就是使用了本节的主题、两个基础类:WebRequest和WebResponse。

从名称上就可以看出,这两个类是针对Web资源的操作类。下面,将针对这两个类来做针对性的细究。

有点儿事儿,未完待续……

02-12 06:17