Python网络爬虫框架Scrapy从入门到精通pdf下载pdf下载

Python网络爬虫框架Scrapy从入门到精通百度网盘pdf下载

作者:
简介:本篇主要提供Python网络爬虫框架Scrapy从入门到精通pdf下载
出版社:北京大学出版社
出版时间:2021-04
pdf下载价格:0.00¥

免费下载


书籍下载


内容介绍

产品特色


编辑推荐

(1)系统:全流程讲解Scrapy的原理和实战,依次击破编程难点。
(2)经典:凝聚笔者十多年的Scrapy使用经验,无私奉献设计秘籍。
(3)深入:浅入深出地介绍爬虫原理、数据爬取、数据保存、数据分析和测试等技术。并且,所有案例都配有对应的代码,拿来就用。

内容简介

本书从Python主流框架Scrapy的简介及网络爬虫知识讲起,逐步深入到Scrapy进阶实战。本书从实战出发,根据不同需求,有针对性地讲解了静态网页、动态网页、App应用是如何爬取所需数据,以及Scrapy是如何部署分布式爬取,最后还介绍了用Scrapy + Pandas是如何进行数据分析及数据展示,让读者不但可以系统地学习Scrapy编程的相关知识,而且还能对Scrapy应用开发有更为深入的理解。
本书分为12章,涵盖的主要内容有Scrapy框架简介;Scrapy网络爬虫知识介绍;Scrapy开发环境的搭建;Scrapy架构及编程;Scrapy进阶;实战项目:Scrapy静态网页的爬取;实战项目:Scrapy动态网页的爬取;实战项目:Scrapy爬取App应用数据;Scrapy的分布式部署与爬取;分布式的实战项目;用Selenium框架测试网站;用Scrapy + Pandas进行数据分析。
本书内容通俗易懂,实例典型,实用性强,特别适合学习Python主流框架Scrapy的入门读者和进阶读者阅读,也适合数据分析与挖掘技术的初学者阅读,还适合相关培训机构的师生阅读。

作者简介

张颖,“清颖设计”微信公众号创始人,现任上海懂得网络科技有限公司技术部主管,从事编程开发十余年,熟悉Python的方方面面,尤其擅长Python爬虫和数据分析。

目录

第1章 Scrapy框架简介
1.1 Scrapy简介 2
1.2 关于本书:目标和用途 2
1.3 进行自动化数据爬取的重要性 3
1.4 掌握自动化测试的重要性 3
1.5 合理规划,开发高质量的应用 4
1.6 网络数据的采集法律与道德约束 5
1.7 本章小结 5
第2章 Scrapy网络爬虫知识介绍
2.1 爬虫的作用 7
2.2 爬虫必备的前端知识 9
2.3 爬虫经常用的Python语法 26
2.4 本章小结 44
第3章 Scrapy开发环境的搭建
3.1 安装Python 47
3.2 数据库的安装 50
3.3 安装Scrapy 56
3.4 本章小结 60
第4章 Scrapy架构及编程
4.1 Scrapy架构及目录源码分析 62
4.2 Scrapy项目的创建和管理 67
4.3 PyCharm如何调试Scrapy 72
4.4 Scrapy的组件 77
4.5 Scrapy的数据流 78
4.6 数据存储 78
4.7 Scrapy如何定义中间件 80
4.8 Scrapy其他方法的使用 82
4.9 本章小结 83
第5章 Scrapy进阶
5.1 理解Scrapy性能 85
5.2 编写Spider的逻辑 93
5.3 Item和Pipeline 95
5.4 数据库存储 98
5.5 Scrapy集成随机User-Agent和代理IP 100
5.6 突破反爬技术 102
5.7 图片和文件下载 103
5.8 如何部署爬虫 108
5.9 计划定时爬取 111
5.10 本章小结 112
第6章 实战项目:Scrapy静态网页的爬取
6.1 采集需求及网页分析 114
6.2 数据表的设计 115
6.3 获取和解析列表、详情页 115
6.4 数据存储 117
6.5 数据的导出和展示 119
6.6 本章小结 121
第7章 实战项目:Scrapy动态网页的爬取
7.1 采集需求及网页分析 123
7.2 Selenium的安装和使用 124
7.3 解析网页及代码的实现 126
7.4 数据的存储 128
7.5 数据的导出 130
7.6 本章小结 133
第8章 实战项目:Scrapy爬取App应用数据
8.1 搭建开发环境 135
8.2 移动自动化工具 144
8.3 Appium Desktop工具的录制功能 147
8.4 App应用数据抓取实战项目 150
8.5 本章小结 158
第9章 Scrapy的分布式部署与爬取
9.1 分布式系统概述及要点 160
9.2 使用Gerapy管理分布式爬虫 162
9.3 通过Scrapyd + ScrapydWeb简单高效地部署和监控分布式爬虫项目 168
9.4 使用Scrapy-Redis实现分布式爬虫 174
9.5 本章小结 195
第10章 分布式的实战项目
10.1 搭建Redis服务器 197
10.2 创建主项目及配置Scrapy-Redis 197
10.3 创建从项目及配置Scrapy-Redis 200
10.4 部署代理IP池及User-Agent 203
10.5 执行程序 205
10.6 本章小结 206
第11章 用Selenium框架测试网站
11.1 网站测试简介 208
11.2 用Scrapy + Selenium进行前端自动化测试 208
11.3 本章小结 235
第12章 用Scrapy + Pandas进行数据分析
12.1 Python数据分析概述 237
12.2 NumPy简介及操作 238
12.3 Matplotlib简介及操作 247
12.4 Pandas简介及操作 256
12.5 实战项目:Scrapy爬取网站并用Pandas进行数据分析 267
12.6 本章小结 284

精彩书摘

第1章 Scrapy框架简介
欢迎来到Scrapy的世界,Scrapy是用Python语言编写的开源网络爬虫框架。如果想在网络上合法地采集想要的数据,或者想要测试网站的性能,那么本书会介绍如何使用Scrapy实现这些功能。不管是经验很少的初学者还是基本没接触过Scrapy的读者,都可通过本书的各种实例、实战项目掌握Scrapy。
1.1 Scrapy简介
从头开发一个爬虫程序是一项很烦琐吃力的工作。为了避免重复地造轮子消耗大量的时间,降低开发成本,提高程序的质量,我们会选择一些优秀的爬虫框架,Scrapy就是其中之一。Scrapy是现在非常流行的开源爬虫框架,而且还是一个成熟的框架;是Python开发的一个快速、高层次的Web数据抓取框架,用于抓取Web站点并从页面中提取结构化的数据。Scrapy用途广泛,可以用于数据采集、数据挖掘、网络异常用户检测、存储数据、监测和自动化测试等方面。
Scrapy使用了Twisted异步网络框架来处理网络通信,可以加快下载速度,不用自己去实现异步框架,并且包含了各种中间件接口,可以灵活地完成各种需求。它也提供了多种类型爬虫的基类,如BaseSpider、Sitemap爬虫等,最新版本又提供了Web 2.0爬虫的支持。
Scrapy是基于事件的架构,使数据清洗、格式化、数据存储级联起来。当打开上千万链接时,可以同时合理地拆分吞吐量,只要合理设计,性能的降低就会比较小。例如,假如想从某网站获取商品销量的信息,假设每页包含100个商品的销量。Scrapy可以非常轻松地在该网站并行(同时)执行16个请求。如果一个请求需要1秒,那么每秒就会爬取16页,把16页乘每页的商品数量,最后得出每秒爬取1600个商品销量的信息。这样,速度和性能大大增加,比单线程每秒爬取100个商品,足足快了16倍。
1.2 关于本书:目标和用途
本书的目标:通过基础知识的梳理,重点示例和实战项目的演示,来教读者如何使用Scrapy。
第2~4章,梳理运用Scrapy所需要的基础必备知识,以及Scrapy在不同操作系统中是如何搭建的。第5章是Scrapy的进阶知识介绍,让读者更好地掌握Scrapy并且能更好地运用它。第6~10章是实战项目,分别通过静态网页、动态网页、App的数据抓取及分布式的部署与爬取,让读者更深入地了解和掌握Scrapy的框架精华。第11章是通过爬虫测试网站性能的介绍和实例,让读者掌握Scrapy的另一个功能——自动化测试。第12章是利用Python进行数据分析,并对三大模块——NumPy、Matplotlib和Pandas进行了详细介绍,通过实例来演示Scrapy爬取网站,并对爬取到的数据进行分析及视图展示。
由浅入深地阅读本书,并且通过本书的实战项目去练习所学知识,举一反三地磨炼,这样就能成为很优秀的Scrapy开发者。
1.3 进行自动化数据爬取的重要性
2011年5月,麦肯锡全球研究院发布报告——Big data: The next frontier for innovation, competition, and productivity,第一次给大数据做出相对清晰的定义:“大数据是指其大小超出了常规数据库工具获取、储存、管理和分析能力的数据集。”而数据爬取始终与大数据联系在一起,为所有预测提供了基础。“大数据赋予我们预测未来的能力”,这就是数据挖掘的力量。
如今我们的生活已经被数字化:每笔互联网上的、银行卡的交易都是数字化的,每次互联网上浏览的行为都有可能被保存下来进行数字化。随着可穿戴设备的兴起,每一次心跳和呼吸也会被数字化并保存为可用的数据。所以,一台计算机或手机比以往任何时候都能更好地“理解”我们的世界。如果计算机或手机能预测人们的生活方式,它就能准确地告知企业什么时候是进行促销的最佳时机,例如,如果这个人倾向于每周六去餐厅聚会,那么企业可以给他推送餐厅的优惠信息。如果这个人倾向于每年春节出去度假,那么企业可以给他推送一张酒店住宿优惠券或旅游优惠券。互联网金融、医疗病例分析、数据建模、信息聚类、数据分析服务等,这些系统所需要的数据几乎都是要通过爬虫进行获取,并且通过规范化提取完成。它们通过提取到的数据进行分析,进行销售预测,指定商业策略,使营业利润最大化。从海量病例信息中挖掘有价值的信息,提高患者诊断的准确度、治疗的精确度,为医院决策管理提供有力的支持。所以,一旦未来变得可预测,我们总是可以提前计划,并为之做最好的行动准备。
1.4 掌握自动化测试的重要性
是否需要进行软件测试主要取决于以下几点。
(1)客户需求度逐渐提高,相应的对软件系统的要求和期望越来越高。
(2)软件系统复杂度提高,需要多人进行合作。
(3)软件开发是程序员的智力活动,无法用固定的生产标准来管理。
由于以上原因,导致软件质量降低,进度和成本无法控制。所以,我们要尽早测试,尽早发现问题。而且运行一套测试方法能够保证代码按照规定的功能和目标运行,不仅节约时间,而且减少产生BUG的可能性。
手工测试通常是工程师先执行预定义的测试用例,将执行结果与预期的行为进行手工比较并记录结果。每次源代码更改时都会重复这些手动测试,由于都是人为参与,因此这个过程很容易出错。古语有云:“工欲善其事,必先利其器。” 自动化测试则是将自动化工具和技术应用于软件测试,让程序代替人去验证程序功能的过程,旨在减少测试工作,更快、更经济地验证软件质量,有助于以更少的工作量构建质量更好的软件。
自动化测试分为三个层级:单元测试、接口测试和UI测试,这三层呈一个金字塔形状分布。最底层是单元测试,接口测试在中间,UI测试在最上层。
自动化测试还可以解决以下问题。
(1)软件在发布新版本以后对之前的功能进行验证。
(2)软件的压力测试,即多用户同时操作软件,软件服务器处理多用户请求的能力。
(3)软件的兼容性测试,即在不同浏览器(IE、Chrome、Firefox等)中的展现能力,或者在不同操作系统(Windows、Linux等)中的兼容能力。
目前大多数编程语言(包括Python)都有一些测试框架。将Python的Unittest库与网络爬虫组合起来,就可以实现简单的网站前端测试功能。Python的Selenium是一个可以解决网站中各种复杂问题的优秀测试框架,用它可以写出一些符合测试流程的测试脚本进行网站测试。
1.5 合理规划,开发高质量的应用
为了合理规划,开发高质量的应用,需要通过网络数据采集,对其关键共性技术进行研发,提升数据存储、理论算法、模型分析等核心竞争力,做出面向大数据的分析软件。
通过爬虫的细心抓取,可以为企业提供大量的真实数据,帮助企业构建覆盖全流程、全环节、全生命周期的数据链,使企业提升数据分析处理和知识创造能力的同时,还可以帮助企业及早发现和修复错误,并做出明智的决策。
1.6 网络数据的采集法律与道德约束
当我们开发爬虫进行网络采集时,需要关注网络上数据的版权。如果采集别人的文章放在自己的网站上展示,则侵犯了别人对这篇文章的版权。一般爬虫采集的大多数数据都是统计数据,但是如果采集的数据源被对方申请了版权,那么在未取得授权的情况下是不能进行采集的。
以下行为表示违反了采集法律。
(1)超出Robots协议的许可。Robots协议是国际互联网界通行的道德规范,也是一种存放于网站根目录下的文本文件,它通常告诉爬虫,此网站中的哪些内容是不可以爬取的,哪些内容是可以爬取的。打个比方:网站就像酒店里的房间,房间的门口会挂着“请勿打扰”或“欢迎光临”的提示牌。那么,服务生就知道哪些房间能够进入,哪些房间不能进入。如果强行进入“请勿打扰”的房间,就算违法了。Scrapy提供了这些功能的设置。
(2)对爬取的网站造成了实际的伤害。网络服务器是很昂贵的,如果由于无限量大批地从目标网站爬取数据,使目标网站崩溃,就会导致网站无法为其他用户正常地提供服务。这些都算是对目标网站造成的伤害。
(3)故意而为之。虽然采集有时需要很长的时间,但最好让爬虫在午夜进行,这样可以减少目标网站的压力。这样的行为可以不影响网站高峰期的运行。
1.7 本章小结
本章介绍了Scrapy,介绍了它能够帮助用户做什么,并且阐述了自动化数据爬取和自动化测试的重要性。此外,告诉读者合理规划,开发高质量的应用及网络数据需要合法采集。

前言/序言

前 言

这项技术有什么前途

如今,已经进入大数据时代,很多的行业在使用大数据之后都得到了非常好的效果。互联网是大数据发展的前哨阵地,大数据围绕在我们生活的方方面面,它们相辅相成、互联依赖,并且不断在快速发展。随着大数据时代的发展,人们似乎都习惯了将自己的生活通过网络进行数据化,方便分享、记录和回忆。例如,我们每天都在通过自己的QQ、微信、微博更新自己的动态、朋友圈等,这些都将构成一种数据。大数据通过数据挖掘来进行用户行为分析,推测出用户的爱好、工作、住址、收入情况等信息。

在这个信息交换频率无限发达的时代,当工作、生活、娱乐、学习方式全都可以由数字分析得出时,企业的经营方式也将会过渡到数据挖掘时代。现在,企业几乎每天每时都在产生着大量的业务数据。“工欲善其事,必先利其器”,只要善于运用Scrapy获取数据、分析数据、运用数据,就能透过这些数据真正了解用户,抓住用户心理,完全可以根据用户不同的消费习惯、消费能力等,主动提供精准的个性化产品和服务。

本书讲解的是目前最流行的Python爬虫框架Scrapy,它简单灵活、易扩展,使用它可以高效地开发网络爬虫应用。Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架。它将网页采集的通用功能,集成到各个模块中,留出自定义的部分,将程序员从烦冗的流程式重复劳动中解放出来。我们只需要实现少量代码,就能够快速地抓取到数据内容。Scrapy使用了Twisted异步网络框架来处理网络通信,可以加快下载速度,不用自己去实现异步框架,并且包含了各种中间件接口,可以灵活地完成各种需求。尽管Scrapy原本是设计用来网络抓取,但它也可以用来访问API来提取数据。而且Scrapy框架通过管道的方式存入数据库,可保存为多种形式。所以,使用Scrapy框架可以高效完成网站数据爬取任务。

利用Scrapy + Pandas还能够进行数据的分析及图形化展示。


笔者的使用体会

Scrapy集成了各种功能(高性能异步下载、队列、分布式、解析、持久化等),是一个通用性很强的项目模板。通过这个框架可以很快地爬取到我们想要的数据,并且能够进行数据清洗、分析及图形化展示。


这本书的特色

本书的宗旨是以实用为主,通过通俗易懂的语言、丰富实用的案例,讲解Python网络爬虫框架Scrapy的原理和开发技术,主要特色如下。

(1)由浅入深,循序渐进。

(2)在讲解一些比较抽象的基础知识时会配有示例代码,以便让读者更深刻地去理解Scrapy的作用和应用,而不仅是一段段枯燥无味的文档。

(3)实战案例选材方面都是以章节中讲解的知识点为核心,尽量选择能够贴近日常生活的网站进行演示。

(4)在讲解一些重要的知识点时,会对源码进行分析,让读者能够“知其然,知其所以然”,以便日后在进行开发时能够游刃有余。


读者对象

·Python网络爬虫初学者

·运用Scrapy框架的初学者

·数据分析和挖掘技术的初学者

·高校和培训学校相关专业的师生

·其他对网络爬虫框架Scrapy感兴趣的各类人员