编辑推荐
适读人群:《虫术——Python绝技》适合后端的Python开发者以及对爬虫技术感兴趣的读者。
《虫术——Python绝技》基于Python这门灵活且简洁的语言,结合作者在网络数据爬取和大数据方面的实际工程经验,使得《虫术——Python绝技》更具实用性。《虫术——Python绝技》旨在让更多数据工作者或编程爱好者在大数据时代从海量的信息中通过掌握“虫术”来获取对自已或企业有价值的信息。
内容简介
爬虫初步
提供学习虫术的技术线路图,介绍爬虫基本的实现方法与实际运用。
Scrapy基础
以Scrapy架构为核心,详解Scrapy架构和各个模块的作用。
Scrapy工程管理与部署
详解Scrapyd的安装配置,介绍scrapyd-client和scrapyd-deploy的使用方法。
中阶虫术
分析Scrapy的蜘蛛内部实现,运用Selenium和Splash处理棘手的JavaScript网页,详解如何处理采集后的数据。
高阶虫术
聚焦于爬虫系统的性能,讲解如何能让爬虫变得更加隐蔽,如何让爬虫能看懂图片并训练它们使之变得更加聪明。讲解虫术的“大招”(分布式爬虫)来应对大规模的数据采集工作与数据存储的工作。
作者简介
近二十年软件开发、项目管理、团队建设和管理经验。致力于互联网技术应用与大数据应用方面的研究与开发工作。曾任多家软件公司的高级软件工程师、项目经理、首席架构师和技术总监等职务。
现任广州市增增智能科技有限公司CEO,从事视觉智能、语音智能及IoT等技术的产品研发与企业经营方面的工作。
目录
第1章爬虫初步
1.1爬虫与大数据
1.1.1大数据架构
1.1.2爬虫的作用与地位
1.1.3Python与爬虫
1.1.4Python的网络爬虫框架
1.1.5虫术技术路线图
1.2实例:简单的爬虫
1.3内容分析进阶
1.3.1选择器
1.3.2深入BeautifulSoup
1.3.3元素的搜寻
1.3.4乱码与中文编码
1.4新闻供稿的爬取实例
1.5小结
第2章Scrapy基础知识
2.1Scrapy架构
2.2Scrapy快速入手
2.3数据模型Item
2.4蜘蛛—Spiders
2.5管道—ItemPipeline
2.6Scrapy的运行与配置
2.7新闻供稿爬虫的Scrapy实现
2.8小结
第3章Scrapy的工程管理
3.1Scrapyd
3.2scrapyd-client及部署
3.3搭建爬虫服务器
第4章中阶虫术
4.1蜘蛛的演化
4.1.1蜘蛛的本质—深入Spider
4.1.2通用蜘蛛
4.1.3蜘蛛中间件
4.2爬虫系统的测试与调试
4.2.1开发期调试
4.2.2蜘蛛的测试
4.2.3蜘蛛的运行期调试
4.2.4调试内存溢出
4.3处理HTTP请求
4.3.1HTTP请求
4.3.2Scrapy的Request对象
4.3.3表单处理
4.3.4下载器中间件
4.4处理HTTP响应
4.4.1HTTP响应
4.4.2Scrapy的响应对象
4.4.3深入选择器
4.4.4非结构化数据的提取
4.4.5黑夜中的眼睛
4.5处理JavaScript
4.5.1示例:电商产品爬虫
4.5.2Selenium和PhantomJS
4.5.3Scrapy与Splash
4.6数据存储与后处理
4.6.1图片的下载与存储
4.6.2示例:产品图片采集
4.6.3导出到数据文件
4.6.4导出到数据库
4.6.5示例:基于阿里云的存储后端
第5章高阶虫术
5.1增量式爬网
5.1.1推演路由
5.1.2时机的重要性
5.1.3去重处理
5.1.4布隆过滤器
5.1.5基于Redis的布隆过滤器
5.2突破封印
5.2.1封禁浅析
5.2.2客户端仿真
5.2.3化身万千—蜘蛛世界的易容术
5.2.4反跟踪
5.2.5绕开蜜罐
5.3虫海
5.3.1分布式爬虫架构
5.3.2认识scrapy-redis
5.3.3示例:分布式电商爬虫
5.4可视化爬虫
5.4.1示例:某点评网爬虫
5.4.2解读Portia爬虫代码
5.4.3数据项加载器—ItemLoaders
5.4.4最后的工作
前言/序言
很久以前我就接触了网络爬虫这门技术,从当时接触的范畴来说,称之为“小玩意”或者“小助手”可能更为贴切。我使用爬虫只是为了收集一些样本数据做测试,或者对上线的项目进行高强度的并发性压力测试,又或者获取感兴趣的图片、新闻。
爬虫涉及的技术比较多,用各种语言都可以快速地写出一个爬虫,所以一直以来并没有被看作一门综合性的技术,直到2015年我负责的开发部门接到公司安排的三项重点开发任务:
(1)从微信和微博上搜集哪些言论正变得热门,哪些公众号或者微博账号的关注度正在持续地上升。
(2)要与一家技术很落后的电商公司的业务系统在没有提供数据接口的情况下进行大规模的数据同步。
(3)开发一个数据可视化平台,并导入公司内部多年来的销售数据(都是一些Excel和CSV文件),然后将当前每月在京东、淘宝等电商平台上的统计数据合并起来进行统一的查询与统计。
在接到这三个任务时,可以说是没有任何头绪的,这些任务简单看都是一些数据整合的工作。在深入分析与研究之后发现,要完成这三大任务都必须依赖爬虫技术。
这是一个坑坑洼洼,而且充满挑战的过程。例如,如何能从号称封闭独立的微信中挖出数据,又不被屏蔽;如何能将每天过亿条的数据存储下来而不会“塞爆”服务器;如何能将每天一大堆的CSV或者Excel文件下载到服务器,然后自动整理入库而不会出现数据错误,等等。在完成这三个项目之后,我和我的团队都对爬虫有了非常深刻的理解与认识,很多方面的知识与经验都得到了极大的提高。在综合过往的开发经验和这几年的实际入坑经验之后,我决定将其编撰成书,将这些看似零散的技术融合起来。
内容介绍
“虫术”是一门综合性的技术,涉及的知识面很广,为了不让你在一大堆的技术面前感到茫然,我将这门“术”分成了三个运用阶段,一步步由浅入深地进行叙述。
《虫术——Python绝技》共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章 高阶虫术
本章是对中阶虫术的深化,聚焦于爬虫系统的性能,讲解如何让爬虫变得更加隐蔽,如何让爬虫看懂图片,如何训练它们使之变得更加聪明,最后讲解如何掌握虫术的大招“分布式爬虫”来应对大规模的数据集采工作与数据存储任务。
勘误
《虫术——Python绝技》如有勘误,会在https://github.com/DotNetAge/上发布。由于笔者能力有限,时间仓促,书中难免有错漏,欢迎读者批评指正。
梁睿坤