这是「进击的Coder」的第 505 篇分享
作者:崔庆才
大家好,本节首先来预告下即将出版的《Python3网络爬虫开发实战(第二版)》的主要内容。
由于我已经把书的总体的内容介绍写在了书的前言部分,所以这篇文章我就把前言部分的内容直接摘录一下啦,包括第二版相比第一版的改动内容,以及全书内容的介绍。
以下内容来自于《Python3网络爬虫开发实战(第二版)》前言。
前言
您好,我是崔庆才。
首先,非常高兴我们能够因此书与您初次或再次相会。为什么会提到再次相会呢?因为这本书已经是第二版了。如果您曾经阅读过本书第一版的内容,那么请允许我再次对您的支持表示诚挚的感谢。
我是在 2015 年开始接触网络爬虫的,当时爬虫其实并没有这么火,我当时觉得能够把想要的数据抓取下来就是一件非常有成就感的事情,而且也可以顺便熟悉 Python,一举两得。在学习期间,我将学到的内容做好总结,发表到我的博客(https://cuiqingcai.com)上。随着我发表的内容越来越多,博客的浏览量也越来越多,很多读者对我的博文给予了肯定的评价,这也给我的爬虫学习之路增添了很多动力。后来有一天,图灵的王编辑联系了我,问我有没有意向写一本爬虫方面的书,我听到之后充满了欣喜和期待,这样既能把自己学过的知识点做一个系统整理,又可以跟广大爬虫爱好者分享自己的学习经验,还可以出版自己的作品,于是我很快就答应约稿了。一开始觉得写书并不是一件那么难的事,后来真正写了才发现其中包含的艰辛。书相比博客来说,用词的严谨性要高很多,而且逻辑需要更加缜密,很多细节必须考虑得非常周全。前前后后写了近一年的时间,审稿和修改又花费了将近半年的时间,一路走来甚是不易,不过最后看到书稿成型,觉得这一切都是值得的。
第一版书是在 2018 年出版的,出版后本书受到了不少读者的支持和喜爱,真的非常感谢各位读者的支持。有的读者还特地告诉我,他看了我的书之后找到了一份不错的爬虫工作,听到之后我真的感到非常开心,因为我的一些知识和经验帮助到了他人。
但技术总是在不断发展和进步的,爬虫技术也是一样,它在爬虫和反爬虫不断斗争的过程中也在不断演进。比如现在越来越多的网页采取了各种防护措施,比如前端代码的压缩和混淆、API 的参数加密、WebDriver 的检测,要做到高效的数据爬取,我们就需要懂得一些 JavaScript 逆向分析相关技术。App 也是一样,App 的抓包防护、加壳保护、Native 化、风控检测使得越来越多的 App 数据难以爬取,所以我们也不得不了解一些逆向相关技术,如 Xposed、Frida、IDA Pro 等工具的使用。除此之外,近几年深度学习和人工智能发展得也是如火如荼,所以爬虫也可以和人工智能结合起来,比如基于深度学习的验证码识别、网页内容的智能化解析和提取等技术我们也可以进行学习和了解。另外,一些大规模爬虫的管理和运维技术也在不断发展,当前 Kubernetes、Docker、Prometheus 等云原生技术也非常火爆,基于 Kubernetes 等云原生技术的爬虫管理和运维解决方案也已经很受青睐。然而,之前第一版书对以上提到的这些新兴技术几乎没有提及。
除此之外,第一版书在讲解数据爬取的过程中引用了很多案例和服务,比如猫眼电影网站、淘宝网站、代理服务网站,然而几年过去了,有些案例网站和服务早已经改版或者停止维护,这就导致第一版书中的很多案例已经不能正常运行了。这其实是一个很大的问题,因为程序运行不通会大大降低学习的积极性和成就感,而且会浪费不少时间。另外,即使案例对应的爬虫代码及时更新了,那我们也不知道这些案例网站和服务什么时候会再次改版,因为这都是不可控的。所以,为了彻底解决这个问题,我花费了近半年的时间构建了一个爬虫案例平台(https://scrape.center),平台包含了几十个爬虫案例,包括服务端渲染(SSR)网站、单页面应用(SPA)网站、各类反爬网站、验证码网站、模拟登录网站、各类 App 等,覆盖了现在爬虫和反爬虫相关的大多数技术,整个平台都是我来维护的,书中几乎所有案例都是从案例平台来的,从而解决了页面改版的问题。
所以,本书相比第一版来说,更新的内容主要如下:
绝大多数都迁移到了自建的案例平台,以后再也不用担心案例有过期或改版问题。
移除了原本第一章环境安装的章节,将环境配置的部分全部汇总并迁移到案例平台(https://setup.scrape.center)并在书中以外链的形式附上,以确保环境的配置和安装说明能够被及时更新。
增加了一些新的请求库、解析库、存储库等的介绍,如 httpx、parsel、Elasticsearch 等库的介绍。
增加了异步爬虫的介绍,如协程的基本原理、aiohttp 的使用和爬取实战介绍。
增加了一些新兴自动化工具的介绍,如 Pyppeteer、Playwright 的介绍。
增加了深度学习相关内容,如图形验证码、滑动验证码的识别方案。
丰富了模拟登录章节的内容,如增加了 JWT 模拟登录的介绍和实战、大规模账号池的优化。
增加了 JavaScript 逆向的章节,包括网站加密和混淆技术、JavaScript 逆向调试技巧、JavaScript 的各种模拟执行方式、AST 还原混淆代码、WebAssembly 等相关技术的介绍。
丰富了 App 自动化爬取技术的章节,如新兴框架 Airtest 的介绍、手机群控和云手机技术的介绍。
增加了 Android 逆向章节,如反编译、反汇编、Hook、脱壳、so 文件分析和模拟执行等技术的介绍。
增加了网页智能化解析章节,包括列表页、详情页内容提取算法和分类算法。
丰富了 Scrapy 相关章节的介绍,如 Pyppeteer 的对接、RabbitMQ 的对接、Prometheus 的对接等。
增加了基于 Kubernetes、Docker、Prometheus、Grafana 等云原生技术爬虫管理和运维解决方案的介绍。
由于我本人工作、生活等各方面的原因,我的时间并不像写第一版书时间那么宽裕,所以第二版的爬虫书的撰写进度比较慢,这本书的内容几乎都是我利用下班和周末的时间完成的,耗时将近两年的时间。如今,第二版书终于跟读者见面了!在撰写期间我也收到过很多读者的询问和鼓励,非常感谢各位读者的支持和耐心等待。
希望本书能够为您学习爬虫提供帮助。
本书内容
本书一共分为 17 章,归纳如下。
第 1 章介绍了学习爬虫之前需要了解的基础知识,如 HTTP、爬虫、代理、网页结构、多进程多线程等内容,对爬虫没有任何了解的读者建议好好了解这一章的知识。
第 2 章介绍了最基本的爬虫操作,一般学习爬虫都是从这一步学起的。这一章介绍了最基本的请求库(urllib、requests、httpx)和正则表达式的基本用法。学会了这一章,就可以掌握最基本的爬虫技术了。
第 3 章介绍了页解析库的基本用法,包括 Beautiful Soup、XPath、pyquery、parsel 的基本使用方法,它们可以使得信息的提取更加方便、快捷,是爬虫必备利器。
第 4 章介绍了数据存储的常见形式及存储操作,包括 TXT、JSON、CSV 各种文件的存储,以及关系型数据库 MySQL 和非关系型数据库 MongoDB、Redis 的基本存取操作,另外还介绍了 Elasticsearch 搜索引擎存储、消息队列 RabbitMQ 的用法。学会了这些内容,我们可以灵活方便地保存爬取下来的数据。
第 5 章介绍了 Ajax 数据爬取的过程,一些网页的数据可能是通过 Ajax 请求 API 接口的方式加载的,用常规方法无法爬取,本章介绍了 Ajax 分析和爬取实战案例。
第 6 章介绍了异步爬虫的相关知识,如支持更高并发的协程的基本原理、aiohttp 的使用和实战案例,学会了异步,爬虫的爬取效率将会被大大提高。
第 7 章介绍了动态渲染页面的爬取,现在越来越多的网站内容是经过 JavaScript 渲染得到的,而原始 HTML 文本可能不包含任何有效内容,而且渲染过程可能涉及某些 JavaScript 加密算法,可以使用 Selenium、Splash、Pyppeteer、Playwright 等工具来实现模拟浏览器进行数据爬取的方法。
第 8 章介绍了验证码的相关处理方法。验证码是网站反爬虫的重要措施,我们可以通过本章了解到各类验证码的应对方案,包括图形验证码、滑动验证码、点选验证码、手机验证码的处理方案,其中不乏有 OCR、OpenCV、深度学习、打码平台的介绍。
第 9 章介绍了代理的使用方法,限制 IP 的访问也是网站反爬虫的重要措施。另外,我们也可以使用代理来伪装爬虫的真实 IP,使用代理可以有效解决这个问题。通过本章,我们了解到代理的使用方法,还学习了代理池的维护方法,以及 ADSL 拨号代理的使用方法。
第 10 章介绍了模拟登录爬取的方法,某些网站需要登录才可以看到需要的内容,这时就需要用爬虫模拟登录网站再进行爬取了。本章介绍了最基本的模拟登录方法,包括基于 Session + Cookie 的模拟登录和基于 JWT 的模拟登录。
第 11 章介绍了 JavaScript 逆向相关知识,包括网站的混淆技术、JavaScript 逆向常用的调试和 Hook 技术、JavaScript 模拟执行的各个方案,接着介绍了 AST 技术来进行 JavaScript 混淆代码的还原,另外也对 WebAssembly 技术进行了基本介绍。
第 12 章介绍了 App 的爬取方法,包括基本的 Charles、mitmproxy 抓包软件的使用。此外,还介绍了 mitmdump 对接 Python 脚本进行实时抓取的方法以及使用 Appium、Airtest 完全模拟手机 App 的操作进行爬取的方法。
第 13 章介绍了 Android 逆向的相关知识,包括反编译工具 jadx、JEB 和常用的 Hook 框架 Xposed、Frida 等工具的使用,另外还介绍了 SSL Pining、脱壳、反汇编、so 文件模拟执行等技术。
第 14 章介绍了页面智能化解析相关的技术,比如新闻详情页面中标题、正文、作者等信息以及新闻列表页面中标题、链接等信息的智能化提取,另外还介绍了如何智能化分辨详情页和列表页。有了智能解析技术,很多内容的提取过程就可以免去一些写规则的困扰。
第 15 章介绍了 Scrapy 爬虫框架及用法。Scrapy 是目前使用最广泛的爬虫框架,本章介绍了它的基本架构、原理及各个组件的使用方法,另外还介绍了 Scrapy 对接 Selenium、Pyppeteer 等方法。
第 16 章介绍了分布式爬虫的基本原理及实现方法。为了提高爬取效率,分布式爬虫是必不可少的,本章介绍了使用 Scrapy 和 Redis、RabbimtMQ 实现分布式爬虫的方法。
第 17 章介绍了分布式爬虫的部署及管理方法。方便快速地完成爬虫的分布式部署,可以节省开发者大量的时间。本章介绍了两种管理方案,一种是基于 Scrapy、Scrapyd、Gerapy 的方案,另一种是基于 Kubernetes、Docker、Prometheus、Grafana 的方案。
好了,前言部分介绍完了。
目录
下面贴一下全书的目录,内容如下:
目前进度
最后就是大家关心的书的进度问题了,我今天又问了编辑,正如上周说的,现在正在印前检查阶段,印前检查一般是 7-10 个工作日,最快是 7 个工作日,上周已经过了 5 个工作日了,所以还剩 2 个工作日。印前检查通过之后就做预算然后上架了。如果要京东、天猫预售的话,是必须要做预算的,但因为现在还没做预算,所以现在还上架不了。整体来看,预计要赶双十一预售有一定难度,不过就在这么几天了。
下面是我和编辑的对话截图:
总之,这所有的能加急的都加急了,编辑会一直盯着,感谢大家支持,很快,这书就要与大家见面啦!届时我会第一时间在本公号公布消息的。
End
「进击的Coder」专属学习群已正式成立,搜索「CQCcqc4」添加崔庆才的个人微信或者扫描下方二维码拉您入群交流学习。
看完记得关注@进击的Coder
及时收看更多好文
↓↓↓
崔庆才的「进击的Coder」知识星球已正式成立,感兴趣的可以查看《我创办了一个知识星球》了解更多内容,欢迎您的加入:
好文和朋友一起看~