本书以大数据应用方面常用的语言Python为基础,从网络爬虫的实现原理入手,逐步引领读者进入网络爬虫的世界。在各类爬虫框架中,将Scrapy作为轴心,从多个维度揭开爬虫技术的面纱。例如,爬取规则的制定技巧,设计高速爬虫,如何让爬虫更“聪明”地获取数据,将海量数据进行分布式存储的技术,设计具有高隐匿性的爬虫,大规模、高并发的分布式爬虫技术。
代码兼顾Python 2和Python 3
分享实战项目源代码
深入分析爬虫测试与调试过程
详解可视化爬虫
近二十年软件开发、项目管理、团队建设和管理经验。致力于互联网技术应用与大数据应用方面的研究与开发工作。曾任多家软件公司的高级软件工程师、项目经理、首席架构师和技术总监等职务。
现任广州市增增智能科技有限公司CEO,从事视觉智能、语音智能及IoT等技术的产品研发与企业经营方面的工作。
很久以前我就接触了网络爬虫这门技术,从当时接触的范畴来说,称之为“小玩意”或者“小助手”可能更为贴切。我使用爬虫只是为了收集一些样本数据做测试,或者对上线的项目进行高强度的并发性压力测试,又或者获取感兴趣的图片、新闻。
爬虫涉及的技术比较多,用各种语言都可以快速地写出一个爬虫,所以一直以来并没有被看作一门综合性的技术,直到2015年我负责的开发部门接到公司安排的三项重点开发任务:
(1)从微信和微博上搜集哪些言论正变得热门,哪些公众号或者微博账号的关注度正在持续地上升。
(2)要与一家技术很落后的电商公司的业务系统在没有提供数据接口的情况下进行大规模的数据同步。
(3)开发一个数据可视化平台,并导入公司内部多年来的销售数据(都是一些Excel和CSV文件),然后将当前每月在京东、淘宝等电商平台上的统计数据合并起来进行统一的查询与统计。
在接到这三个任务时,可以说是没有任何头绪的,这些任务简单看都是一些数据整合的工作。在深入分析与研究之后发现,要完成这三大任务都必须依赖爬虫技术。
这是一个坑坑洼洼,而且充满挑战的过程。例如,如何能从号称封闭独立的微信中挖出数据,又不被屏蔽;如何能将每天过亿条的数据存储下来而不会“塞爆”服务器;如何能将每天一大堆的CSV或者Excel文件下载到服务器,然后自动整理入库而不会出现数据错误,等等。在完成这三个项目之后,我和我的团队都对爬虫有了非常深刻的理解与认识,很多方面的知识与经验都得到了极大的提高。在综合过往的开发经验和这几年的实际入坑经验之后,我决定将其编撰成书,将这些看似零散的技术融合起来。
内容介绍
“虫术”是一门综合性的技术,涉及的知识面很广,为了不让你在一大堆的技术面前感到茫然,我将这门“术”分成了三个运用阶段,一步步由浅入深地进行叙述。
本书共5章,前3章为初阶部分,第4章为中阶部分,第5章为高阶部分。
第1章 爬虫初步
本章首先介绍爬虫在目前大数据生态下的地位,还提供了一份关于学习虫术的详尽的技术线路图,最后讲述爬虫基本的实现方法与实际运用示例,目的在于让读者对虫术建立一个基本的概念并能从示例中引起对这门技术的兴趣。
第2章 Scrapy基础
虫术以Scrapy架构为核心基础,本章对Scrapy的架构和各个模块的作用进行了详细的介绍。
第3章 Scrapy工程管理与部署
本章介绍如何在Scrapy工程中运用Scrapyd将本地工程部署到实际运行环境中,详细地讲述Scrapyd安装配置及其附带的scrapy-client和scrapy-deploy工具的使用方法。
第4章 中阶虫术
本章包含的内容非常丰富,是针对将虫术运用于实际项目展开的。从Scrapy的蜘蛛内部实现开始,深入HTTP底层,实现对Scrapy中间件的支持,运用Selenium或Splash处理棘手的JavaScript网页,最后详细讲述如何处理采集到的数据。
第5章 高阶虫术
本章是对中阶虫术的深化,聚焦于爬虫系统的性能,讲解如何让爬虫变得更加隐蔽,如何让爬虫看懂图片,如何训练它们使之变得更加聪明,最后讲解如何掌握虫术的大招“分布式爬虫”来应对大规模的数据集采工作与数据存储任务。
勘误
本书如有勘误,会在https://github.com/DotNetAge/上发布。由于笔者能力有限,时间仓促,书中难免有错漏,欢迎读者批评指正。
梁睿坤
代码有疑问
if self.fingerprints in item[‘title’]:
是不是应该写为
if item[‘title’] in self.fingerprints: