摘要:
有了上一节画矩形的基础,画圆形就不要太轻松+EZ:)所以,本节在画边线及填充上,就不做过多的讲解了,关注一下画“随机椭圆”、“正圆”、“路径填充”的具体实现就好。与画矩形相比较,画椭圆与之完全一致,没有任何特别之处。 在画矩形时,我们使用: System.Drawing.Graphics.DrawR 阅读全文
摘要:
我们在第五节中提到一个问题,任务队列增长速度太快,与之对应的采集、分析、处理速度远远跟不上,造成内存快速增长,带宽占用过高,CPU使用率过高,这样是极度有害系统健康的。 我们在开发采集程序的时候,总是希望能够尽快将数据爬取下来,如果总任务数量很小(2~3K请求数之内),总耗费时长很短(1~2分钟之内 阅读全文
摘要:
有了上一节画线的基础,画矩形的各种边线就特别好理解了,所以,本节在矩形边线上,就不做过多的讲解了,关注一下画“随机矩形”的具体实现就好。与画线相比较,画矩形稍微复杂的一点就是在于它多了很多填充的样式。接下来,我们就来细细品味一番。 同样,一个窗体项目,窗体的布局风格与上一节的保持一致: 1 name 阅读全文
摘要:
之前的章节也略有提及反爬策略,本节,我们就来系统的对反爬、反反爬的种种,做一个了结。 从防盗链说起: 自从论坛兴起的时候,网上就有很多人会在论坛里发布一些很棒的文章,与当下流行的“点赞”“分享”一样,很多人都会因为“欣赏”而选择“转发”到各大论坛。今时今日,我们大多数人在转载他人文章时,还会特别注明 阅读全文
摘要:
今天正式开一本新书,《C# GDI+ 破镜之道》,同样是破镜之道系列丛书的一分子。 关于GDI+呢,官方的解释是这样的: GDI+ 是 Microsoft Windows 操作系统的窗体子系统应用程序编程接口 (API)。 GDI+ 是负责在屏幕和打印机上显示的信息。 顾名思义,GDI+ 是包含 G 阅读全文
摘要:
在上一节中,我们完成了一个简单的采集示例。本节呢,我们先来小结一下,这个示例可能存在的问题: 没有做异常处理 没有做反爬应对策略 没有做重试机制 没有做并发限制 …… 呃,看似平静的表面下还是隐藏着不少杀机的…… 但本节不打算对付上述问题,而是先关注一个隐藏更深的问题,这个问题,可能会牵扯很多人(包 阅读全文
摘要:
之前的章节,我们陆续的介绍了使用C#制作爬虫的基础知识,而且现在也应该比较了解如何制作一只简单的Web爬虫了。 本节,我们来做一个完整的爬虫系统,将之前的零散的东西串联起来,可以作为一个爬虫项目运作流程的初探,但实际项目中,还需要解决其他一些问题,我们后续章节也将继续深耕:) 先来看一下解决方案的整 阅读全文
摘要:
背景: 工作机器上安装了4个T的磁盘,包含很多食之无味、弃之可惜的历史项目文件、学习资料(文本、视频),毕竟十多年的积累,基本都在,但却凌乱不堪,想找点儿什么,也似大海捞针。 目标: 历史项目 以项目名称创建根目录,划分源码文档、需求文档、设计文档、资源文件、数据库、编译输出、加壳加密、交付历史等子 阅读全文
摘要:
续上一节内容,本节主要讲解一下Web压缩数据的处理方法。 在HTTP协议中指出,可以通过对内容压缩来减少网络流量,从而提高网络传输的性能。 那么问题来了,在HTTP中,采用的是什么样的压缩格式和机制呢? 首先呢,先说压缩格式,主要有三种: DEFLATE,是一种使用 Lempel-Ziv 压缩算法( 阅读全文
摘要:
续上一节内容,对Web爬虫进行进一步封装,通过委托将爬虫自己的状态变化以及数据变化暴露给上层业务处理或应用程序。 为了方便以后的扩展,我先定义一个蚂蚁抽象类(Ant),并让WorkerAnt(工蚁)继承自它。 [Code 2.2.1] 1 using System; 2 3 public abstr 阅读全文