随笔分类 -  C# 爬虫 破境之道

破镜之道系列丛书之C# 爬虫,讲述用C#写爬虫的故事。
摘要:我们在第五节中提到一个问题,任务队列增长速度太快,与之对应的采集、分析、处理速度远远跟不上,造成内存快速增长,带宽占用过高,CPU使用率过高,这样是极度有害系统健康的。 我们在开发采集程序的时候,总是希望能够尽快将数据爬取下来,如果总任务数量很小(2~3K请求数之内),总耗费时长很短(1~2分钟之内 阅读全文
posted @ 2020-02-21 10:24 MikeCheers 阅读(663) 评论(5) 推荐(5) 编辑
摘要:之前的章节也略有提及反爬策略,本节,我们就来系统的对反爬、反反爬的种种,做一个了结。 从防盗链说起: 自从论坛兴起的时候,网上就有很多人会在论坛里发布一些很棒的文章,与当下流行的“点赞”“分享”一样,很多人都会因为“欣赏”而选择“转发”到各大论坛。今时今日,我们大多数人在转载他人文章时,还会特别注明 阅读全文
posted @ 2020-02-19 13:03 MikeCheers 阅读(1082) 评论(3) 推荐(7) 编辑
摘要:在上一节中,我们完成了一个简单的采集示例。本节呢,我们先来小结一下,这个示例可能存在的问题: 没有做异常处理 没有做反爬应对策略 没有做重试机制 没有做并发限制 …… 呃,看似平静的表面下还是隐藏着不少杀机的…… 但本节不打算对付上述问题,而是先关注一个隐藏更深的问题,这个问题,可能会牵扯很多人(包 阅读全文
posted @ 2020-02-18 09:28 MikeCheers 阅读(459) 评论(0) 推荐(3) 编辑
摘要:之前的章节,我们陆续的介绍了使用C#制作爬虫的基础知识,而且现在也应该比较了解如何制作一只简单的Web爬虫了。 本节,我们来做一个完整的爬虫系统,将之前的零散的东西串联起来,可以作为一个爬虫项目运作流程的初探,但实际项目中,还需要解决其他一些问题,我们后续章节也将继续深耕:) 先来看一下解决方案的整 阅读全文
posted @ 2020-02-17 09:15 MikeCheers 阅读(949) 评论(0) 推荐(1) 编辑
摘要:续上一节内容,本节主要讲解一下Web压缩数据的处理方法。 在HTTP协议中指出,可以通过对内容压缩来减少网络流量,从而提高网络传输的性能。 那么问题来了,在HTTP中,采用的是什么样的压缩格式和机制呢? 首先呢,先说压缩格式,主要有三种: DEFLATE,是一种使用 Lempel-Ziv 压缩算法( 阅读全文
posted @ 2020-01-19 10:34 MikeCheers 阅读(843) 评论(0) 推荐(4) 编辑
摘要:续上一节内容,对Web爬虫进行进一步封装,通过委托将爬虫自己的状态变化以及数据变化暴露给上层业务处理或应用程序。 为了方便以后的扩展,我先定义一个蚂蚁抽象类(Ant),并让WorkerAnt(工蚁)继承自它。 [Code 2.2.1] 1 using System; 2 3 public abstr 阅读全文
posted @ 2020-01-16 01:28 MikeCheers 阅读(388) 评论(0) 推荐(1) 编辑
摘要:首先欢迎您来到本书的第二境,本境,我们将全力打造一个实际生产环境可用的爬虫应用了。虽然只是刚开始,虽然路漫漫其修远,不过还是有点小鸡冻:P 本境打算针对几大派生类做进一步深耕,包括与应用的结合、对比它们之间的区别、综合共性、封装。One-By-One。 System.IO.Packaging.Pac 阅读全文
posted @ 2020-01-14 20:02 MikeCheers 阅读(518) 评论(0) 推荐(0) 编辑
摘要:在第一境中,我们主要了解了爬虫的一些基本原理,说原理也行,说基础知识也罢,结果就是已经知道一个小爬虫是如何诞生的了~那么现在,请默默回想一下,在第一境中,您都掌握了哪些内容?哪些还比较模糊?如果还有什么不清楚或不牢固的地方,建议还是先返回去再看一遍,毕竟看比我写要快得多~ 如果都掌握差不多了,OK, 阅读全文
posted @ 2020-01-13 21:35 MikeCheers 阅读(328) 评论(0) 推荐(1) 编辑
摘要:为什么说到数据流了呢,因为上一节中介绍了一下异步发送请求。同样,在数据流的处理上,C#也为我们提供几个有用的异步处理方法。而且,爬虫这生物,处理数据流是基础本能,比较重要。本着这个原则,就聊一聊吧。 我们经常使用到的流有文件流、内存流、网络流,爬虫与这三种流都有着密不可分的联系,可以联想以下这些场景 阅读全文
posted @ 2020-01-12 21:00 MikeCheers 阅读(423) 评论(0) 推荐(0) 编辑
摘要:前两节,我们对WebRequest和WebResponse这两个类做了介绍,但两者还相对独立。本节,我们来说说如何将两者结合起来,方式有哪些,有什么不同。 1.4.1 说结合,无非就是我们如何发送一个Request以及如何得到一个Response。 WebRequest提供了三组方法(Framewo 阅读全文
posted @ 2020-01-03 14:35 MikeCheers 阅读(622) 评论(2) 推荐(0) 编辑
摘要:第二节中,我们介绍了WebRequest,它可以帮助我们发送一个请求,不过正所谓“来而不往非礼也”,对方收到我们的请求,不给点回复,貌似不太合适(不过,还真有脸皮厚的:P)。 接下来,就重点研究一下,我们收到的回复,是个什么样的东东 [Code 1.3.1] 1 // 2 // Summary: 3 阅读全文
posted @ 2020-01-03 13:17 MikeCheers 阅读(408) 评论(0) 推荐(0) 编辑
摘要:本节主要来介绍一下,在C#中制造爬虫,最为常见、常用、实用的基础类 WebRequest、WebResponse。 先来看一个示例 [1.2.1]: 运行以上代码,我们能看到类似如下的输出: 一只爬虫小幼崽儿,就如此轻松的诞生了~ 示例 [1.2.1]中,最核心的部分,就是使用了本节的主题、两个基础 阅读全文
posted @ 2019-12-24 12:27 MikeCheers 阅读(819) 评论(0) 推荐(1) 编辑
摘要:在构建本章节内容的时候,笔者也在想一个问题,究竟什么样的采集器框架,才能算得上是一个“全能”的呢?就我自己以往项目经历而言,可以归纳以下几个大的分类: 以上的分类,也有可能不够全面,不过应该可以涵盖主流数据采集的分类了。 为了方便阐述一个爬虫的工作原理,我们从上面找到一条最简单路径,来进行阐述(偷奸 阅读全文
posted @ 2019-12-24 11:19 MikeCheers 阅读(491) 评论(0) 推荐(0) 编辑
摘要:第一节:写作本书的目的 关于笔者 张晓亭(Mike Cheers),1982年出生,内蒙古辽阔的大草原是我的故乡。 没有高学历,没有侃侃而谈的高谈阔论,拥有的就是那一份对技术的执著,对自我价值的追求。 我是谁,其实并不重要,我是高级开发、我是架构师、我是技术经理,这些都是我,跟各位没有半毛钱关系。最 阅读全文
posted @ 2019-12-09 12:14 MikeCheers 阅读(548) 评论(0) 推荐(1) 编辑