描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787115474209
产品特色
编辑推荐
Scrapy是一个开源的Python爬虫框架,可以用来轻松提取从页面数据。Scrapy带有丰富的特性,可通过简单的编码或配置来访问,从而可以节省开发人员数周的开发时间,并高效地提取所需数据。Scrapy有一个高度活跃且迅速增长的社区,而且已经成为黑客、创业者和Web爬取专家的首 选框架。
本书讲解了Scrapy的基础知识,讨论了如何从任意源提取数据,如何清理数据,以及如何使用Python和第三方API进行处理,以满足自身需求。本书还讲解了如何将爬取的数据高效地馈入数据库、搜索引擎和流数据处理系统(比如Apache Spark)。在学习完本书后,你将对数据爬取胸有成竹,并将数据应用在自己的应用程序中。
本书内容:
使用HTML和Xpath提取所需的数据;
使用Python编写Scrapy爬虫,并在网络上进行爬取操作;
将数据推送到任意数据库、搜搜引擎或分析系统的方法;
配置爬虫,使其下载文件和图形,以及使用代理;
创建用来限流数据的高效管道;
使用Twitsted实践驱动的API并发处理数百个Item;
让爬虫更快速,让内存使用率更高,以及对Scrapy性能进行调优的技巧;
使用Scrapyd和Scrapinghub执行大规模分布式爬取操作的方法。
本书讲解了Scrapy的基础知识,讨论了如何从任意源提取数据,如何清理数据,以及如何使用Python和第三方API进行处理,以满足自身需求。本书还讲解了如何将爬取的数据高效地馈入数据库、搜索引擎和流数据处理系统(比如Apache Spark)。在学习完本书后,你将对数据爬取胸有成竹,并将数据应用在自己的应用程序中。
本书内容:
使用HTML和Xpath提取所需的数据;
使用Python编写Scrapy爬虫,并在网络上进行爬取操作;
将数据推送到任意数据库、搜搜引擎或分析系统的方法;
配置爬虫,使其下载文件和图形,以及使用代理;
创建用来限流数据的高效管道;
使用Twitsted实践驱动的API并发处理数百个Item;
让爬虫更快速,让内存使用率更高,以及对Scrapy性能进行调优的技巧;
使用Scrapyd和Scrapinghub执行大规模分布式爬取操作的方法。
内容简介
Scrapy是使用Python开发的一个快速、高层次的屏幕抓取和Web抓取框架,用于抓Web站点并从页面中提取结构化的数据。《精通Python爬虫框架Scrapy》以Scrapy 1.0版本为基础,讲解了Scrapy的基础知识,以及如何使用Python和三方API提取、整理数据,以满足自己的需求。
本书共11章,其内容涵盖了Scrapy基础知识,理解HTML和XPath,安装Scrapy并爬取一个网站,使用爬虫填充数据库并输出到移动应用中,爬虫的强大功能,将爬虫部署到Scrapinghub云服务器,Scrapy的配置与管理,Scrapy编程,管道秘诀,理解Scrapy性能,使用Scrapyd与实时分析进行分布式爬取。本书附录还提供了各种软件的安装与故障排除等内容。
本书适合软件开发人员、数据科学家,以及对自然语言处理和机器学习感兴趣的人阅读。
本书共11章,其内容涵盖了Scrapy基础知识,理解HTML和XPath,安装Scrapy并爬取一个网站,使用爬虫填充数据库并输出到移动应用中,爬虫的强大功能,将爬虫部署到Scrapinghub云服务器,Scrapy的配置与管理,Scrapy编程,管道秘诀,理解Scrapy性能,使用Scrapyd与实时分析进行分布式爬取。本书附录还提供了各种软件的安装与故障排除等内容。
本书适合软件开发人员、数据科学家,以及对自然语言处理和机器学习感兴趣的人阅读。
目 录
第 1章 Scrapy简介1
1.1 初识Scrapy1
1.2 喜欢Scrapy的更多理由2
1.3 关于本书:目标和用途3
1.4 掌握自动化数据爬取的重要性4
1.4.1 开发健壮且高质量的应用,并提供合理规划4
1.4.2 快速开发高质量可行产品5
1.4.3 Google不会使用表单,爬取才能扩大规模6
1.4.4 发现并融入你的生态系统7
1.5 在充满爬虫的世界里做一个好公民7
1.6 Scrapy不是什么8
1.7 本章小结9
第 2章 理解HTML和XPath10
2.1 HTML、DOM树表示以及XPath10
2.1.1 URL11
2.1.2 HTML文档11
2.1.3 树表示法13
2.1.4 你会在屏幕上看到什么14
2.2 使用XPath选择HTML元素15
2.2.1 有用的XPath表达式16
2.2.2 使用Chrome获取XPath表达式19
2.2.3 常见任务示例20
2.2.4 预见变化21
2.3 本章小结22
第3章 爬虫基础23
3.1 安装Scrapy24
3.1.1 MacOS24
3.1.2 Windows25
3.1.3 Linux25
3.1.4 新源码安装26
3.1.5 升级Scrapy26
3.1.6 Vagrant:本书中运行示例的官方方式27
3.2 UR2IM——基本抓取流程28
3.2.1 URL29
3.2.2 请求和响应31
3.2.3 Item31
3.3 一个Scrapy项目37
3.3.1 声明item38
3.3.2 编写爬虫40
3.3.3 填充item43
3.3.4 保存文件45
3.3.5 清理——item装载器与管理字段47
3.3.6 创建contract50
3.4 抽取更多的URL53
3.4.1 使用爬虫实现双向爬取56
3.4.2 使用CrawlSpider实现双向爬取59
3.5 本章小结61
第4章 从Scrapy到移动应用62
4.1 选择手机应用框架62
4.2 创建数据库和集合63
4.3 使用Scrapy填充数据库65
4.4 创建手机应用68
4.4.1 创建数据库访问服务69
4.4.2 创建用户界面69
4.4.3 将数据映射到用户界面70
4.4.4 数据库字段与用户界面控件间映射71
4.4.5 测试、分享及导出你的手机应用72
4.5 本章小结73
第5章 迅速的爬虫技巧75
5.1 需要登录的爬虫75
5.2 使用JSON API和AJAX页面的爬虫81
5.3 30倍速的房产爬虫85
5.4 基于Excel文件爬取的爬虫90
5.5 本章小结93
第6章 部署到Scrapinghub94
6.1 注册、登录及创建项目94
6.2 部署爬虫与计划运行96
6.3 访问item99
6.4 计划定时爬取100
6.5 本章小结101
第7章 配置与管理102
7.1 使用Scrapy设置102
7.2 基本设置103
7.2.1 分析104
7.2.2 性能107
7.2.3 提前终止爬取108
7.2.4 HTTP缓存和离线运行108
7.2.5 爬取风格109
7.2.6 feed110
7.2.7 媒体下载111
7.2.8 Amazon Web服务113
7.2.9 使用代理和爬虫113
7.3 进阶设置114
7.3.1 项目相关设置115
7.3.2 Scrapy扩展设置116
7.3.3 下载调优116
7.3.4 自动限速扩展设置117
7.3.5 内存使用扩展设置117
7.3.6 日志和调试117
7.4 本章小结118
第8章 Scrapy编程119
8.1 Scrapy是一个Twisted应用119
8.1.1 延迟和延迟链122
8.1.2 理解Twisted和非阻塞I O——一个Python故事125
8.2 Scrapy架构概述132
8.3 示例1:非常简单的管道135
8.4 信号136
8.5 示例2:测量吞吐量和延时的扩展138
8.6 中间件延伸141
8.7 本章小结144
第9章 管道秘诀145
9.1 使用REST API146
9.1.1 使用treq146
9.1.2 用于写入Elasticsearch的管道146
9.1.3 使用Google Geocoding API实现地理编码的管道149
9.1.4 在Elasticsearch中启用地理编码索引156
9.2 与标准Python客户端建立数据库接口157
9.3 使用Twisted专用客户端建立服务接口161
9.4 为CPU密集型、阻塞或遗留功能建立接口166
9.4.1 处理CPU密集型或阻塞操作的管道166
9.4.2 使用二进制或脚本的管道168
9.5 本章小结172
第 10章 理解Scrapy性能173
10.1 Scrapy引擎——一种直观方式173
10.1.1 级联队列系统175
10.1.2 定义瓶颈176
10.1.3 Scrapy性能模型176
10.2 使用telnet获得组件利用率178
10.3 基准系统180
10.4 标准性能模型182
10.5 解决性能问题185
10.5.1 案例 #1:CPU饱和185
10.5.2 案例 #2:代码阻塞187
10.5.3 案例 #3:下载器中的“垃圾”188
10.5.4 案例 #4:大量响应或超长响应造成的溢出191
10.5.5 案例 #5:有限 过度item并发造成的溢出193
10.5.6 案例 #6:下载器未充分利用194
10.6 故障排除流程197
10.7 本章小结198
第 11章 使用Scrapyd与实时分析进行分布式爬取199
11.1 房产的标题是如何影响价格的200
11.2 Scrapyd200
11.3 分布式系统概述203
11.4 爬虫和中间件的变化205
11.4.1 索引页分片爬取205
11.4.2 分批爬取URL207
11.4.3 从设置中获取初始URL211
11.4.4 在Scrapyd服务器中部署项目213
11.5 创建自定义监控命令215
11.6 使用Apache Spark流计算偏移量216
11.7 运行分布式爬取218
11.8 系统性能220
11.9 关键要点221
11.10 本章小结221
附录A 软件的安装与故障排除222
1.1 初识Scrapy1
1.2 喜欢Scrapy的更多理由2
1.3 关于本书:目标和用途3
1.4 掌握自动化数据爬取的重要性4
1.4.1 开发健壮且高质量的应用,并提供合理规划4
1.4.2 快速开发高质量可行产品5
1.4.3 Google不会使用表单,爬取才能扩大规模6
1.4.4 发现并融入你的生态系统7
1.5 在充满爬虫的世界里做一个好公民7
1.6 Scrapy不是什么8
1.7 本章小结9
第 2章 理解HTML和XPath10
2.1 HTML、DOM树表示以及XPath10
2.1.1 URL11
2.1.2 HTML文档11
2.1.3 树表示法13
2.1.4 你会在屏幕上看到什么14
2.2 使用XPath选择HTML元素15
2.2.1 有用的XPath表达式16
2.2.2 使用Chrome获取XPath表达式19
2.2.3 常见任务示例20
2.2.4 预见变化21
2.3 本章小结22
第3章 爬虫基础23
3.1 安装Scrapy24
3.1.1 MacOS24
3.1.2 Windows25
3.1.3 Linux25
3.1.4 新源码安装26
3.1.5 升级Scrapy26
3.1.6 Vagrant:本书中运行示例的官方方式27
3.2 UR2IM——基本抓取流程28
3.2.1 URL29
3.2.2 请求和响应31
3.2.3 Item31
3.3 一个Scrapy项目37
3.3.1 声明item38
3.3.2 编写爬虫40
3.3.3 填充item43
3.3.4 保存文件45
3.3.5 清理——item装载器与管理字段47
3.3.6 创建contract50
3.4 抽取更多的URL53
3.4.1 使用爬虫实现双向爬取56
3.4.2 使用CrawlSpider实现双向爬取59
3.5 本章小结61
第4章 从Scrapy到移动应用62
4.1 选择手机应用框架62
4.2 创建数据库和集合63
4.3 使用Scrapy填充数据库65
4.4 创建手机应用68
4.4.1 创建数据库访问服务69
4.4.2 创建用户界面69
4.4.3 将数据映射到用户界面70
4.4.4 数据库字段与用户界面控件间映射71
4.4.5 测试、分享及导出你的手机应用72
4.5 本章小结73
第5章 迅速的爬虫技巧75
5.1 需要登录的爬虫75
5.2 使用JSON API和AJAX页面的爬虫81
5.3 30倍速的房产爬虫85
5.4 基于Excel文件爬取的爬虫90
5.5 本章小结93
第6章 部署到Scrapinghub94
6.1 注册、登录及创建项目94
6.2 部署爬虫与计划运行96
6.3 访问item99
6.4 计划定时爬取100
6.5 本章小结101
第7章 配置与管理102
7.1 使用Scrapy设置102
7.2 基本设置103
7.2.1 分析104
7.2.2 性能107
7.2.3 提前终止爬取108
7.2.4 HTTP缓存和离线运行108
7.2.5 爬取风格109
7.2.6 feed110
7.2.7 媒体下载111
7.2.8 Amazon Web服务113
7.2.9 使用代理和爬虫113
7.3 进阶设置114
7.3.1 项目相关设置115
7.3.2 Scrapy扩展设置116
7.3.3 下载调优116
7.3.4 自动限速扩展设置117
7.3.5 内存使用扩展设置117
7.3.6 日志和调试117
7.4 本章小结118
第8章 Scrapy编程119
8.1 Scrapy是一个Twisted应用119
8.1.1 延迟和延迟链122
8.1.2 理解Twisted和非阻塞I O——一个Python故事125
8.2 Scrapy架构概述132
8.3 示例1:非常简单的管道135
8.4 信号136
8.5 示例2:测量吞吐量和延时的扩展138
8.6 中间件延伸141
8.7 本章小结144
第9章 管道秘诀145
9.1 使用REST API146
9.1.1 使用treq146
9.1.2 用于写入Elasticsearch的管道146
9.1.3 使用Google Geocoding API实现地理编码的管道149
9.1.4 在Elasticsearch中启用地理编码索引156
9.2 与标准Python客户端建立数据库接口157
9.3 使用Twisted专用客户端建立服务接口161
9.4 为CPU密集型、阻塞或遗留功能建立接口166
9.4.1 处理CPU密集型或阻塞操作的管道166
9.4.2 使用二进制或脚本的管道168
9.5 本章小结172
第 10章 理解Scrapy性能173
10.1 Scrapy引擎——一种直观方式173
10.1.1 级联队列系统175
10.1.2 定义瓶颈176
10.1.3 Scrapy性能模型176
10.2 使用telnet获得组件利用率178
10.3 基准系统180
10.4 标准性能模型182
10.5 解决性能问题185
10.5.1 案例 #1:CPU饱和185
10.5.2 案例 #2:代码阻塞187
10.5.3 案例 #3:下载器中的“垃圾”188
10.5.4 案例 #4:大量响应或超长响应造成的溢出191
10.5.5 案例 #5:有限 过度item并发造成的溢出193
10.5.6 案例 #6:下载器未充分利用194
10.6 故障排除流程197
10.7 本章小结198
第 11章 使用Scrapyd与实时分析进行分布式爬取199
11.1 房产的标题是如何影响价格的200
11.2 Scrapyd200
11.3 分布式系统概述203
11.4 爬虫和中间件的变化205
11.4.1 索引页分片爬取205
11.4.2 分批爬取URL207
11.4.3 从设置中获取初始URL211
11.4.4 在Scrapyd服务器中部署项目213
11.5 创建自定义监控命令215
11.6 使用Apache Spark流计算偏移量216
11.7 运行分布式爬取218
11.8 系统性能220
11.9 关键要点221
11.10 本章小结221
附录A 软件的安装与故障排除222
缘月无音 –
粗略翻看了一下,每块内容不多,再仔细阅读看看
zhni –
很老了的一本书,案例不错,值得继续读,每读一遍会有不一样的收获
yyhhff –
正真学习爬虫,框架部分感觉有点难,书讲解挺仔细的。