猜你喜欢
Python 3网络爬虫开发实战

Python 3网络爬虫开发实战

书籍作者:崔庆才 ISBN:9787115480347
书籍语言:简体中文 连载状态:全集
电子书格式:pdf,txt,epub,mobi,azw3 下载次数:2676
创建日期:2021-02-14 发布日期:2021-02-14
运行环境:PC/Windows/Linux/Mac/IOS/iPhone/iPad/Kindle/Android/安卓/平板
内容简介

本书介绍了如何利用Python 3开发网络爬虫,书中首先介绍了环境配置和基础知识,然后讨论了urllib、requests、正则表达式、Beautiful Soup、XPath、pyquery、数据存储、Ajax数据爬取等内容,接着通过多个案例介绍了不同场景下如何实现数据爬取,最后介绍了pyspider框架、Scrapy框架和分布式爬虫。

本书适合Python程序员阅读。


作者简介

崔庆才

北京航空航天大学硕士,静觅博客(https://cuiqingcai.com/)博主,爬虫博文访问量已过百万,喜欢钻研,热爱生活,乐于分享。欢迎关注个人微信公众号“进击的Coder”。


编辑推荐

案例丰富,注重实战

博客文章过百万的静觅大神力作

全面介绍了数据采集、数据存储、动态网站爬取、App爬取、验证码破解、模拟登录、代理使用、爬虫框架、分布式爬取等知识

涉及的库或工具:urllib、requests、Beautiful Soup、XPath、pyquery、redis-py、PyMongo、PyMySQL、Selenium、Splash、Charles、mitmproxy、mitmdump、Appium、pyspider、Scrapy、Scrapy-Redis、Scrapy-Splash、Docker、Bloom Filter、Gerapy等


前言

前  言

为什么写这本书

在这个大数据时代,尤其是人工智能浪潮兴起的时代,不论是工程领域还是研究领域,数据已经成为必不可少的一部分,而数据的获取很大程度上依赖于爬虫的爬取,所以爬虫也逐渐变得火爆起来。我是在2015年开始接触爬虫的,当时爬虫其实并没有这么火,我当时觉得能够把想要的数据抓取下来就是一件非常有成就感的事情,而且也可以顺便熟悉Python,一举两得。在学习期间,我将学到的内容做好总结,发表到博客上。随着我发表的内容越来越多,博客的浏览量也越来越多,很多读者对我的博文给予了肯定的评价,这也给我的爬虫学习之路增添了很多动力。在学习的过程中,困难其实还是非常多的,最早学习时使用的是Python 2,当时因为编码问题搞得焦头烂额。另外,那时候相关的中文资料还比较少,很多情况下还得自己慢慢去啃官方文档,走了不少弯路。随着学习的进行,我发现爬虫这部分内容涉及的知识点太多、太杂了。网页的结构、渲染方式不同,我们就得换不同的爬取方案来进行针对性的爬取。另外,网页信息的提取、爬取结果的保存也有五花八门的方案。随着移动互联网的兴起,App的爬取也成了一个热点,而为了提高爬取速度又需要考虑并行爬取、分布式爬取方面的内容,爬虫的通用性、易用性、架构都需要好好优化。这么多杂糅的知识点对于一个爬虫初学者来说,学习的挑战性会非常高,同时学习过程中大家或许也会走我之前走过的弯路,浪费很多时间。后来有一天,图灵的王编辑联系了我,问我有没有意向写一本爬虫方面的书,我听到之后充满了欣喜和期待,这样既能把自己学过的知识点做一个系统整理,又可以跟广大爬虫爱好者分享自己的学习经验,还可以出版自己的作品,于是我很快就答应约稿了。

一开始觉得写书并不是一件那么难的事,后来真正写了才发现其中包含的艰辛。书相比博客来说,用词的严谨性要高很多,而且逻辑需要更加缜密,很多细节必须考虑得非常周全。前前后后写了大半年的时间,审稿和修改又花费了几个月的时间,一路走来甚是不易,不过最后看到书稿成型,觉得这一切都是值得的。在书中,我把我学习爬虫的很多经验都写了进去。环境配置是学习的第一步,环境配置不好,其他工作就没法开展,甚至可能很大程度上打击学习的积极性,所以我在第1章中着重介绍了环境的配置过程。而因为操作系统的不同,环境配置过程又各有不同,所以我把每个系统(Windows、Linux、Mac)的环境配置过程都亲自实践了一遍,并梳理记录下来,希望为各位读者在环境配置时多提供一些帮助。后面我又针对爬虫网站的不同情形分门别类地进行了说明,如Ajax分析爬取、动态渲染页面爬取、App爬取、使用代理爬取、模拟登录爬取等知识,每个知识点我都选取了一些典型案例来说明,以便于读者更好地理解整个过程和用法。为了提高代码编写和爬取的效率,还可以使用一些爬虫框架辅助爬取,所以本书后面又介绍了两个流行的爬虫框架的用法,最后又介绍了一些分布式爬虫及部署方面的知识。总体来说,本书根据我个人觉得比较理想的学习路径介绍了学习爬虫的相关知识,并通过一些实战案例帮助读者更好地理解其中的原理。

本书内容

本书一共分为15章,归纳如下。

? 第1章介绍了本书所涉及的所有环境的配置详细流程,兼顾Windows、Linux、Mac三大平台。本章不用逐节阅读,需要的时候查阅即可。

? 第2章介绍了学习爬虫之前需要了解的基础知识,如HTTP、爬虫、代理的基本原理、网页基本结构等内容,对爬虫没有任何了解的读者建议好好了解这一章的知识。

? 第3章介绍了最基本的爬虫操作,一般学习爬虫都是从这一步学起的。这一章介绍了最基本的两个请求库(urllib和requests)和正则表达式的基本用法。学会了这一章,就可以掌握最基本的爬虫技术了。

? 第4章介绍了页解析库的基本用法,包括Beautiful Soup、XPath、pyquery的基本使用方法,它们可以使得信息的提取更加方便、快捷,是爬虫必备利器。

? 第5章介绍了数据存储的常见形式及存储操作,包括TXT、JSON、CSV各种文件的存储,以及关系型数据库MySQL和非关系型数据库MongoDB、Redis存储的基本存储操作。学会了这些内容,我们可以灵活方便地保存爬取下来的数据。

? 第6章介绍了Ajax数据爬取的过程,一些网页的数据可能是通过Ajax请求API接口的方式加载的,用常规方法无法爬取,本章介绍了使用Ajax进行数据爬取的方法。

? 第7章介绍了动态渲染页面的爬取,现在越来越多的网站内容是经过JavaScript渲染得到的,而原始HTML文本可能不包含任何有效内容,而且渲染过程可能涉及某些JavaScript加密算法,可以使用Selenium、Splash等工具来实现模拟浏览器进行数据爬取的方法。

? 第8章介绍了验证码的相关处理方法。验证码是网站反爬虫的重要措施,我们可以通过本章了解到各类验证码的应对方案,包括图形验证码、极验验证码、点触验证码、微博宫格验证码的识别。

? 第9章介绍了代理的使用方法,限制IP的访问也是网站反爬虫的重要措施。另外,我们也可以使用代理来伪装爬虫的真实IP,使用代理可以有效解决这个问题。通过本章,我们了解到代理的使用方法,还学习了代理池的维护方法,以及ADSL拨号代理的使用方法。

? 第10章介绍了模拟登录爬取的方法,某些网站需要登录才可以看到需要的内容,这时就需要用爬虫模拟登录网站再进行爬取了。本章介绍了最基本的模拟登录方法以及维护一个Cookies池的方法。

? 第11章介绍了App的爬取方法,包括基本的Charles、mitmproxy抓包软件的使用。此外,还介绍了mitmdump对接Python脚本进行实时抓取的方法,以及使用Appium完全模拟手机App的操作进行爬取的方法。

? 第12章介绍了pyspider爬虫框架及用法,该框架简洁易用、功能强大,可以节省大量开发爬虫的时间。本章结合案例介绍了使用该框架进行爬虫开发的方法。


? 第13章介绍了Scrapy爬虫框架及用法。Scrapy是目前使用最广泛的爬虫框架,本章介绍了它的基本架构、原理及各个组件的使用方法,另外还介绍了Scrapy通用化配置、对接Docker的一些方法。

? 第14章介绍了分布式爬虫的基本原理及实现方法。为了提高爬取效率,分布式爬虫是必不可少的,本章介绍了使用Scrapy和Redis实现分布式爬虫的方法。

? 第15章介绍了分布式爬虫的部署及管理方法。方便快速地完成爬虫的分布式部署,可以节省开发者大量的时间。本章结合Scrapy、Scrapyd、Docker、Gerapy等工具介绍了分布式爬虫部署和管理的实现。

致谢

感谢我的父母、导师,没有他们创造的环境,我不可能完成此书的写作。

感谢我的女朋友李园,在我写书期间给了我很多的支持和鼓励。同时她还主导设计了本书的封面,正是她的理解和付出才使本书得以完善。

感谢在我学习过程中与我探讨技术的各位朋友,特别感谢汪海洋先生在我初学爬虫过程中给我提供的指导,特别感谢崔弦毅、苟桃、时猛先生在我写书过程中为我提供的思路和建议。

感谢为本书撰写推荐语的李舟军老师、宋睿华老师、梁斌老师、施水才老师(排名不分先后),感谢你们对本书的支持和推荐。

感谢王军花、陈兴璐编辑,在书稿的审核过程中给我提供了非常多的建议,没有你们的策划和敦促,我也难以顺利完成此书。

感谢为本书做出贡献的每一个人!

相关资源

本书中的所有代码都放在了GitHub(详见https://github.com/Python3WebSpider),书中每个实例对应的章节末也有说明。

本人的个人博客也会更新爬虫相关文章,欢迎读者访问交流,博客地址:https://cuiqingcai.com/。

崔庆才

2018年1月


目录

第1章 开发环境配置  1

1.1 Python 3的安装  1

1.1.1 Windows下的安装  1

1.1.2 Linux下的安装  6

1.1.3 Mac下的安装  8

1.2 请求库的安装  10

1.2.1 requests的安装  10

1.2.2 Selenium的安装  11

1.2.3 ChromeDriver的安装  12

1.2.4 GeckoDriver的安装  15

1.2.5 PhantomJS的安装  17

1.2.6 aiohttp的安装  18

1.3 解析库的安装  19

1.3.1 lxml的安装  19

1.3.2 Beautiful Soup的安装  21

1.3.3 pyquery的安装  22

1.3.4 tesserocr的安装  22

1.4 数据库的安装  26

1.4.1 MySQL的安装  27

1.4.2 MongoDB的安装  29

1.4.3 Redis的安装  36

1.5 存储库的安装  39

1.5.1 PyMySQL的安装  39

1.5.2 PyMongo的安装  39

1.5.3 redis-py的安装  40

1.5.4 RedisDump的安装  40

1.6 Web库的安装  41

1.6.1 Flask的安装  41

1.6.2 Tornado的安装  42

1.7 App爬取相关库的安装  43

1.7.1 Charles的安装  44

1.7.2 mitmproxy的安装  50

1.7.3 Appium的安装  55

1.8 爬虫框架的安装  59

1.8.1 pyspider的安装  59

1.8.2 Scrapy的安装  61

1.8.3 Scrapy-Splash的安装  65

1.8.4 Scrapy-Redis的安装  66

1.9 部署相关库的安装  67

1.9.1 Docker的安装  67

1.9.2 Scrapyd的安装  71

1.9.3 Scrapyd-Client的安装  74

1.9.4 Scrapyd API的安装  75

1.9.5 Scrapyrt的安装  75

1.9.6 Gerapy的安装  76

第2章 爬虫基础  77

2.1 HTTP基本原理  77

2.1.1 URI和URL  77

2.1.2 超文本  78

2.1.3 HTTP和HTTPS  78

2.1.4 HTTP请求过程  80

2.1.5 请求  82

2.1.6 响应  84

2.2 网页基础  87

2.2.1 网页的组成  87

2.2.2 网页的结构  88

2.2.3 节点树及节点间的关系  90

2.2.4 选择器  91

2.3 爬虫的基本原理  93

2.3.1 爬虫概述  93

2.3.2 能抓怎样的数据  94

2.3.3 JavaScript渲染页面  94

2.4 会话和Cookies  95

2.4.1 静态网页和动态网页  95

2.4.2 无状态HTTP  96

2.4.3 常见误区  98

2.5 代理的基本原理  99

2.5.1 基本原理  99

2.5.2 代理的作用  99

2.5.3 爬虫代理  100

2.5.4 代理分类  100

2.5.5 常见代理设置  101

第3章 基本库的使用  102

3.1 使用urllib  102

3.1.1 发送请求  102

3.1.2 处理异常  112

3.1.3 解析链接  114

3.1.4 分析Robots协议  119

3.2 使用requests  122

3.2.1 基本用法  122

3.2.2 高级用法  130

3.3 正则表达式  139

3.4 抓取猫眼电影排行  150

第4章 解析库的使用  158

4.1 使用XPath  158

4.2 使用Beautiful Soup  168

4.3 使用pyquery  184

第5章 数据存储  197

5.1 文件存储  197

5.1.1 TXT文本存储  197

5.1.2 JSON文件存储  199

5.1.3 CSV文件存储  203

5.2 关系型数据库存储  207

5.2.1 MySQL的存储  207

5.3 非关系型数据库存储  213

5.3.1 MongoDB存储  214

5.3.2 Redis存储  221

第6章 Ajax数据爬取  232

6.1 什么是Ajax  232

6.2 Ajax分析方法  234

6.3 Ajax结果提取  238

6.4 分析Ajax爬取今日头条街拍美图  242

第7章 动态渲染页面爬取  249

7.1 Selenium的使用  249

7.2 Splash的使用  262

7.3 Splash负载均衡配置  286

7.4 使用Selenium爬取淘宝商品  289

第8章 验证码的识别  298

8.1 图形验证码的识别  298

8.2 极验滑动验证码的识别  301

8.3 点触验证码的识别  311

8.4 微博宫格验证码的识别  318

第9章 代理的使用  326

9.1 代理的设置  326

9.2 代理池的维护  333

9.3 付费代理的使用  347

9.4 ADSL拨号代理  351

9.5 使用代理爬取微信公众号文章  364

第10章 模拟登录  379

10.1 模拟登录并爬取GitHub  379

10.2 Cookies池的搭建  385

第11章 App的爬取  398

11.1 Charles的使用  398

11.2 mitmproxy的使用  405

11.3 mitmdump爬取“得到”App电子书

信息  417

11.4 Appium的基本使用  423

11.5 Appium爬取微信朋友圈  433

11.6 Appium+mitmdump爬取京东商品  437

第12章 pyspider框架的使用  443

12.1 pyspider框架介绍  443

12.2 pyspider的基本使用  445

12.3 pyspider用法详解  459

第13章 Scrapy框架的使用  468

13.1 Scrapy框架介绍  468

13.2 Scrapy入门  470

13.3 Selector的用法  480

13.4 Spider的用法  486

13.5 Downloader Middleware的用法  487

13.6 Spider Middleware的用法  494

13.7 Item Pipeline的用法  496

13.8 Scrapy对接Selenium  506

13.9 Scrapy对接Splash  511

13.10 Scrapy通用爬虫  516

13.11 Scrapyrt的使用  533

13.12 Scrapy对接Docker  536

13.13 Scrapy爬取新浪微博  541

第14章 分布式爬虫  555

14.1 分布式爬虫原理  555

14.2 Scrapy-Redis源码解析  558

14.3 Scrapy分布式实现  564

14.4 Bloom Filter的对接  569

第15章 分布式爬虫的部署  577

15.1 Scrapyd分布式部署  577

15.2 Scrapyd-Client的使用  582

15.3 Scrapyd对接Docker  583

15.4 Scrapyd批量部署  586

15.5 Gerapy分布式管理  590


短评

作为技术博客是五颗星 作为爬虫参考书是四颗星 作为易读实用是三颗星 作为一本“书”是两颗星 作为值得反复翻阅、上书架的是一颗星。 这本书很好的体现了中国人写的书和外国人,尤其是美国人写的书的差别,看《python网络数据采集》看到高潮,很来劲地去搜各种扩展技术要点,而这本书我看得只有头大!

2018-04-20

标签
Python,爬虫,计算机科学,网络,工程,programming
产品特色