Scrapy是1个开源系统的Python网络爬虫架构,能够用于轻轻松松获取从网页页面统计数据。Scrapy含有丰富多彩的特点,可根据简易的编号或配备来浏览,进而能够节约开发者数日的开发设计時间,并高效率地获取需要统计数据。Scrapy有个高宽比活跃性且快速提高的小区,并且早已变成网络黑客、创业人和Web抓取权威专家的首 选架构。 这书解读了Scrapy的基本知识,探讨了怎样从随意源获取统计数据,怎样清理数据,及其怎么使用Python和第三方平台API开展解决,以考虑本身要求。这书还解读了如何把抓取的统计数据高效率地馈入数据库查询、引擎搜索和流数据处理系统(例如Apache Spark)。在学习培训完这书后,你将对统计数据抓取成竹在胸,并将统计数据运用在自身的手机应用程序中。 这书內容: 应用HTML和Xpath获取需要的统计数据; 应用Python撰写Scrapy网络爬虫,并在互联网上开展抓取实际操作; 将统计数据消息推送到随意数据库查询、搜下模块或分析软件的方式 ; 配备网络爬虫,使其免费下载文档和图型,及其应用代理商; 建立用于制人数统计数据的高效率管路; 应用Twitsted实践活动驱动器的API高并发解决数以百计Item; 让网络爬虫更迅速,让运行内存利用率更高,及其对Scrapy特性开展调优的方法; 应用Scrapyd和Scrapinghub实行规模性分布式系统抓取实际操作的方式 。Scrapy是应用Python开发设计的1个迅速、高层次人才的显示屏爬取和Web爬取架构,用以抓Web网站并从网页页面中获取结构型的统计数据。《熟练Python网络爬虫架构Scrapy》以Scrapy 1.0版本号为基本,解读了Scrapy的基本知识,及其怎么使用Python和第三方API获取、梳理统计数据,以考虑自身的要求。 这书共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