《C# 爬虫 破境之道》:概述
第一节:写作本书的目的
关于笔者
张晓亭(Mike Cheers),1982年出生,内蒙古辽阔的大草原是我的故乡。
没有高学历,没有侃侃而谈的高谈阔论,拥有的就是那一份对技术的执著,对自我价值的追求。
我是谁,其实并不重要,我是高级开发、我是架构师、我是技术经理,这些都是我,跟各位没有半毛钱关系。最重要的是,我能给读者带来什么。接下来的日子里,就看看本书能给各位带来什么惊喜,也许到最后,你都不会记得我的名字,没有关系,相信我,那并不重要。
关于本书
本书是《破境之道》系列技术丛书中的一部分,将针对使用C#开发数据采集器(俗称爬虫)进行系统全面的讲解,写作意图就是希望能够通过本书使读者能够深入掌握有关爬虫的方方面面。所谓“破境”,源自修行者在修行之路上对境界的突破。这里也深含着笔者对读者的一份殷切期望,希望能够帮助读者在技术修行的道路上,达到“武道巅峰”。
本系列丛书又名《看完丢掉》。知识、技术逐渐变成快销品,虽然笔者也不愿意这样,但回头看看,当初步入修行队伍时,使用的ASP、VBScript等等,也早已淡出人们的视线,相信所剩无几了吧。时代在发展,科技在进步,大多数从业者也都习惯了每日甚至是没日没夜的追随新的前沿技术潮流,虽已疲惫不堪,但也乐此不疲。这也是本系列丛书在命名上对从业者的期许,希望能够帮助读者详细梳理知识点,在心中形成知识体系,并通过各种角度分析加深印象,牢记于心,将知识从枯燥的文字搬入脑海。那么,然后呢,这本书就可以丢掉了!不要止步,还有更多的知识在等待着我们。
本系列丛书,将尽量使用当下最为流行甚至前沿的技术版本,但,毕竟写作也需要耗费大量的时间精力,可能在您看到本书的时候,它已失去了耀眼的光辉,不过还是希望能够对那些没有技术框架更新需求或计划的产品线有所帮助。同样,如果读者对某些知识点还存在疑惑,也可以通过本书来进行一个查漏补缺,相信对快速掌握新技术也是会有所帮助的。
本书的写作目的很明确,深入探究C# 爬虫的技术细节以及在实际工作中,需要注意的“坑”。
本书并不是入门书籍,并没有将知识点做层次划分,因为实际生产过程中,要求就是很高,没有产品经理跑过来会对你说:“兄弟,咱们这周先搭一个入门级商城先用着,下周再升级成中级,月底咱们再升级成高级的,你说好不好?”。相信他这么说,你是很满意了,因为你看到的入门书籍太多了,很习惯,很适应甚至是很喜欢,不过,到不了月底,这位产品经理可能已经离去了。
第二节:使用C#开发爬虫 概述
主要功能特性
- 分布式:爬虫从单点向集群发展已经是一个大趋势,当然,视实际情况而定,并不是所有需求都必须要做成集群,但笔者希望从业人员都具有扩展它的能力。
- 两套模板:采集模板和分析模板,当我们的采集目标是不固定的,我们更希望在切换到下一个目标的时候,能够少写代码,尽量通过配置来完成。
- 多线程:在数据采集、数据处理领域,多线程是必不可少的基本功。
- 缓存的应用:缓存有助于我们提高系统的整体性能,但它也是双刃剑,在实际应用中,需要多方考量,谨慎使用。
- 数据存储:数据存储的介质、思路、方式有很多,没有什么是最好的,就像使刀还是使剑,各有所长,建议在开发阶段,使用顺手的吧,也提倡尝鲜,但在生产环境中,还是使用最适合的。
- 数据源:在采集过程中,我们经常会碰到一些阻碍,来自技术本身、个人能力或者数据源本身的问题,那么,我们需要扩宽思路,不要在一棵树上吊死,尝试换个思路和路径,也许能达到更好的效果。
- 可扩展:本书尽可能的让读者能够开发出一套可扩展性强的爬虫系统,包括但不限于:可扩充节点、灵活的配置、自定义接口等。
这些特性都将融入在具体章节中详细讲解。
第三节:开发环境准备
想要开始我们的MVC之旅,开发环境是必不可少的,但是本书并不想浪费过多笔墨在基础环境搭建上,只是列出基础环境需求以及本书中使用的IDE开发环境。
- Windows操作系统
- Visual Studio 2017
- .Net Framework 4.6.1
- 数据库(为了避免大家对使用何种数据库产生分歧,本书尽量使用文件系统,比较中立,至于生产环境使用何种数据库,取决的因素很多,后续章节中,也会给出一些建议)
- 但还是需要读者有一定的C#及数据库方面的知识,越强越好!可以参阅本系列丛书中的其他书籍。
喜欢本系列丛书的朋友,可以点击链接加入QQ交流群(994761602)【C# 破境之道】
方便各位在有疑问的时候可以及时给我个反馈。同时,也算是给各位志同道合的朋友提供一个交流的平台。
需要源码的童鞋,也可以在群文件中获取最新源代码。
《C# 爬虫 破境之道》:概述的更多相关文章
- 『TCP/IP详解——卷一:协议』读书笔记——01
从今日起开始认真研读TCP/IP详解这本经典制作,一是巩固我薄弱的计算机网络知识,二来提高我的假期的时间利用率.将心得与思考记录下来,防止白看-哦耶 2013-08-14 18:47:06 第一章 概 ...
- 『TCP/IP详解——卷一:协议』读书笔记——10
2013-08-22 22:57:17 3.8 ifconfig命令 这个命令在Linux系统下可以通过下面的指令阅读说明文档: ifconfig 由于书中作者用的系统比较早的某Unix系统,所以我的 ...
- 【TCP/IP详解 卷一:协议】第二章:链路层
2.1 引言 链路层的三个目的: (1)为IP模块发送和接收IP数据报. (2)为ARP模块发送ARP请求和接收ARP应答.地址解析协议:ARP. (3)为RARP模块发送RARP请求和接收RARP应 ...
- TCP/IP详解学习笔记- 概述
TCP/IP详解学习笔记(1)-- 概述1.TCP/IP的分层结构 网络协议通常分不同层次进行开发,每一层分别负责不同的同信功能.TCP/IP通常被认为是一个四层协议系统. 如图所 ...
- TCP/IP详解 卷一(第一章 概述)
很多不同的厂家生产各种型号的计算机,它们运行完全不同的操作系统,但TCP/IP协议族允许它们相互进行通信. 1.分层 TCP/IP不是一个协议,而是一个协议族,通常它被认为是一个四层的协议系统,下面展 ...
- 《TCP/IP详解卷一:协议》 概述
分层 TCP/IP协议族是一组不同层次上的多个协议的组合.TCP/IP通常被认为是一个四层次协议系统. 链路层(数据链路层或网络接口层):通常包括操作系统中的设备驱动程序和计算 ...
- 【TCP/IP详解 卷一:协议】TCP的小结
前言:TCP学习的综述 在学习TCP/IP协议的大头:TCP协议 的过程中,遇到了很多机制和知识点,详解中更是用了足足8章的内容介绍它. TCP协议作为 应用层 和 网络层 中间的 传输层协议,既要为 ...
- 【TCP/IP详解 卷一:协议】第十一章 UDP 用户数据报协议
11.1 引言 UDP 是一个简单的 面向数据报 的运输层协议:进程的每个 输出操作 都正好产生一个 UDP数据报,并且组装成一份待发送的IP数据报. 这与 TCP 不一样,它是 面向流字符 的协议, ...
- 【TCP/IP详解 卷一:协议】第六章:DHCP 和自动配置
简介 为了使用 TCP/IP 协议族,每台主机or路由器都需要一定的配置信息: IP地址 子网掩码 广播地址 路由或转发表 DNS 协议配置方法: 手动 通过使用网络服务来获得 使用一些算法来自动确定 ...
- 【TCP/IP详解 卷一:协议】第一章概论 学习笔记
第一章 概述 游览了一下,本章主要是简介OSI模型的低层(1-4层).介绍了TCP/IP协议族的相关知识. TCP/IP的分层 Application <--> TCP / UDP < ...
随机推荐
- 设置html各元素不可点击(持续更新)
1.span <span id="nextStep" onclick="right">下一页</span> $("#nextS ...
- springboot+nginx+https+linux实现负载均衡加域名访问简单测试
把springboot项目打包成三个jar包,并指定端口为 14341,14342,14343 下载腾讯云免费ssl证书,解压后会出现如下图文件夹 把nginx文件夹下的 .crt 和 .key文件复 ...
- 关于vue-cli打包配置部署404
在vue脚手架(vue-cli)下我很很快的就可以搭建自己的开发环境,但是我们把项目编写完后,需要进行打包上线会遇到各种问题,在根据版本问题,(vue3的版本跟之前相比少了很多配置项),下面是我用老版 ...
- JQ绑定事件的叠加和解决,index()方法的坑
JQ绑定事件的叠加和解决,index()方法的坑 前言 在做过几个不大不小的项目后,发现技术这种东西,必须要多多实践,才能发现各种问题,理论的知识掌握的再好终究是纸上谈兵. 因此目前感觉有两点是必须要 ...
- 开篇 | 揭秘 Flink 1.9 新架构,Blink Planner 你会用了吗?
本文为 Apache Flink 新版本重大功能特性解读之 Flink SQL 系列文章的开篇,Flink SQL 系列文章由其核心贡献者们分享,涵盖基础知识.实践.调优.内部实现等各个方面,带你由浅 ...
- Python程序执行顺序
#示例代码基于py3.6 一直对Python程序的执行顺序有些疑惑,例如python程序是顺序执行的,那怎么还有main函数的出现呢? 在查阅了资料后,参见这里后,算是有点明白了: 1.python程 ...
- JMeter分布式负载测试(吞吐量控制器)
在本节中,我们将学习如何使用吞吐量控制器在JMeter中创建分布式负载测试计划. 出于测试目的,我们将在我们网站 www.yiibai.com 的URL下的某些网页上创建分布式负载.这些网页包括: 主 ...
- C++的特殊预处理定义#、##和#@
c/c++的预处理定义: 一.Stringizing Operator (#) 在c和c++中数字标志符#被赋予了新的意义,即字符串化操作符.其作用是:将宏定义中的传入参数名转换成用一对双引号括起来的 ...
- DEVOPS技术实践_11:Jenkins集成Sonar
前言 前面已经有介绍sonar的安装,简单应用,下面在简答的研究一下sonar和jenkins集成的简单使用,对于sonar的安装不做介绍 一 sonar的简单介绍 持续检查避免了低质量的代码,比如S ...
- iOS定位权限请求时易犯的错误小结
起因 用户群反馈app可能请求了不合适的定位权限:始终定位. 看到这个截图,根据经验判断可能是后台定位功能导致可能不得不请求始终定位权限.再加上之前提交审核时,苹果要求在plist文件中新增NSLoc ...