网络爬虫原理与实践:基于C#语言
上QQ阅读APP看书,第一时间看更新

前言

虽然Python爬虫依靠强大的第三方库能够快速实现某些特定功能,但由于这些库封装的层次较高,隐藏了大量内部细节,使用者往往知其然而不知其所以然,遇到问题难以延展。学习基于C#的爬虫开发虽然起步稍慢,但能够更好地理解底层网络原理和爬虫架构;借助强大的VS平台和C#优秀的语言特性,更容易开发出专业级的可视化爬虫工具。相对于Python的“人生苦短”,我们追求的是“诗和远方”。

本书基于C#语言介绍网络爬虫开发的基本原理、技巧和应用实例,适合网络爬虫开发的爱好者和研究者阅读。读者最好具备一定的编程基础,或者正在学习C#编程,以便更好地理解本书的内容。

本书具有以下特点:

1)内容简明、由浅入深。本书不追求内容上的面面俱到,而是围绕网络爬虫的核心环节,介绍其基本原理和实现方法,并进行适当的功能扩展。与其他同类书籍相比,本书篇幅适中,适合初学者阅读。

2)实例丰富,代码翔实。书中尽量选择逻辑简明、功能完整的典型实例,从需求、设计、实现的角度分别进行介绍。而且,几乎所有实例都给出了主要实现代码,并对关键代码进行了详细注释,方便读者进行实践。

全书共分11章。第1章介绍网络爬虫的基础知识,包括网络、网页和爬虫概述;第2章简要介绍C#编程,并侧重与网络爬虫相关的内容;第3章介绍网络资源下载的方法,并实现通用资源下载器;第4章介绍网页数据抽取的方法,重点实现HTML解析器;第5章介绍XML和JSON数据抽取的方法,从而获得更丰富的目标数据;第6章介绍爬虫数据的存储,从而将采集结果保存到文件或数据库;第7章介绍网络爬虫的搜索方式,包括深度优先搜索和广度优先搜索,并实现爬虫控制器;第8章介绍多线程爬虫,并实现自定义线程池以提高爬虫效率;第9章介绍如何使用代理服务器,并实现自定义代理池;第10章介绍常见的浏览器内核,以及如何使用GeckoFx模拟浏览器获取深层数据;第11章介绍抽取模板的表示、管理以及可视化配置方法。

由于网站更新,一段时间后实例中的某些URL链接可能会失效,部分网页结构也会发生变化,此时相关实例需要做相应的代码调整才能正确运行。技术是中立的,本书所述内容仅用于技术交流,任何人若将相关技术用于商业或其他用途,需自行承担由此产生的影响和后果。

致谢

在本书即将出版之际,首先感谢我的合作者种惠芳老师,种老师专业过硬、认真负责,承担了大量撰写工作;特别感谢恩师张克亮教授一直以来对我的指导和鼓励;感谢易绵竹教授、马延周副教授、唐亮副教授、王亚利副教授对本书提出的许多宝贵意见;感谢任静静老师、张婷老师、沈丽民老师、王帅鸽老师参与了本书初稿的校对。最后,感谢我的妻子赵盼,她对家庭双倍的付出才让我有时间完成本书。

限于作者的学识,书中难免有表述不当或疏漏之处,恳请各位读者指正。

李健

2022年5月