具体描述
本书介绍了如何利用Python 3开发网络爬虫,书中首先介绍了环境配置和基础知识,然后讨论了urllib、requests、正则表达式、Beautiful Soup、XPath、pyquery、数据存储、Ajax数据爬取等内容,接着通过多个案例介绍了不同场景下如何实现数据爬取,后介绍了pyspider框架、Scrapy框架和分布式爬虫。
本书适合Python程序员阅读。
作者简介
崔庆才
北京航空航天大学硕士,静觅博客(https://cuiqingcai.com/)博主,爬虫博文访问量已过百万,喜欢钻研,热爱生活,乐于分享。欢迎关注个人微信公众号“进击的Coder”。
目录信息
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
· · · · · · (收起)
读后感
没想买书也会遇到刷分水军。这书非常失望,啰嗦本是无所谓也希望细点,但这书的啰嗦是浪费时间又讲不清楚的啰嗦。文字非常不流畅,不是照搬照抄拼凑,就是逻辑混乱讲不清楚。读起来就好像一本外国书被一个翻译水平很差的人进行翻译的感觉。可能因为作者还是个学生,又是工科生...
看了高评分才买了这书。但真的写的很差,没用的内容啰嗦很多,开始说要讲更实用的方法时怎么都讲不清楚还自相矛盾,就是一带而过。不知道是不是作者也不知道怎么理解,只是从别处抄了过来。以后再也不能买在读学生写的书了,太浪费时间了。而且现在感觉爬虫不应该看书,应该从...
没想买书也会遇到刷分水军。这书非常失望,啰嗦本是无所谓也希望细点,但这书的啰嗦是浪费时间又讲不清楚的啰嗦。文字非常不流畅,不是照搬照抄拼凑,就是逻辑混乱讲不清楚。读起来就好像一本外国书被一个翻译水平很差的人进行翻译的感觉。可能因为作者还是个学生,又是工科生...
书买来读了几章,感觉说的比较详细,学到一些这方面技能,不过要是能便宜些就更好了。自己也依葫芦画瓢写个爬虫,抓取最近5年豆瓣关于python的书籍评分榜: 《Fluent Python》 2015 9.6 《Python神经网络编程》 2018 9.6 《Django By Example》 2015 9.5 《流畅的Python》 2017...
书的目录看起来很全面,可是书的细节处理不是很到位。小的点也讲的不清不楚,感觉错误有点多,有点失望吧,毕竟是我的第一本python。北航硕士跟清华博士还是有差别的。 比如说书中的scrapy一节的scrapy运行机制,本书中讲的是从engine向spideraf发出requests可是之后用的时候yy...
用户评价
从技术栈的更新迭代角度来看,这本书紧跟时代步伐的速度值得称赞。在这个技术日新月异的领域,一本内容陈旧的书籍很快就会贬值。然而,我惊喜地发现,书中涵盖的技术选型非常具有前瞻性。它没有沉溺于早已被淘汰的旧方法,而是选择了当前业界主流且高效的工具和框架进行深入介绍。尤其是在处理异步请求和高并发抓取时所展示的思路,非常符合现代网络爬虫对效率的极致追求。更重要的是,作者对于不同技术方案之间的优劣对比分析得十分到位,他没有强迫读者“非此不可”,而是提供了一个决策框架,让我们能够根据具体需求选择最合适的工具组合。这种辩证和平衡的讲解方式,培养的不仅仅是操作技能,更是分析和权衡问题的技术思维,这才是长期来看最核心的竞争力。
初拿到这本书时,我最担心的就是那些技术术语和复杂的概念会不会讲得过于晦涩难懂,毕竟网络爬虫涉及到的技术栈比较广,什么HTTP协议、DOM解析、反爬机制等等,听起来就让人头大。然而,这本书的叙事方式出乎意料地平易近人。作者似乎非常懂得如何与初学者对话,他没有直接跳入那些高深的理论深渊,而是选择了一个非常巧妙的切入点,用一系列生动且贴近实际生活的小案例作为引子,逐步引导我们进入核心知识领域。这种“搭积木式”的讲解方法,让我能紧跟上节奏,每学完一个章节,都有种“原来是这么回事”的豁然开朗感。我尤其欣赏作者在解释每一个技术点时,都会穿插一些历史背景或者实际应用中的“坑”,这使得知识点不再是孤立的,而是有了鲜活的生命力。读起来就像是有一位经验丰富的前辈坐在旁边,边泡茶边为你耐心拆解难题,而不是冷冰冰地扔下一堆公式和代码让你自己琢磨。
这本书的实战性令人印象深刻,它远超出了教科书式的理论讲解。作者的编写思路显然是紧密围绕“如何动手解决实际问题”展开的。我发现书中介绍的每一个工具、每一个库,都不是泛泛而谈,而是紧密结合了当下互联网环境中真实存在的网站抓取场景。例如,在讲解数据清洗和存储时,作者并没有只停留在简单的文件写入,而是深入探讨了如何处理编码问题、如何结构化地将非结构化数据导入数据库,甚至还涉及到了应对数据格式变化的策略。这种深度和广度兼备的实战指导,对于我们这些希望快速将所学应用于工作或个人项目的学习者来说,简直是太宝贵了。读完一个项目实战部分,我立刻就能信心满满地尝试去爬取一个自己感兴趣的垂直领域网站,因为书中已经把可能遇到的陷阱和解决方案都预演了一遍,极大地降低了试错成本。这已经不是一本简单的教程,更像是一本可即时部署的实战手册。
这本书的装帧设计着实让人眼前一亮,从封面到内页的排版,都透露着一股专业又不失亲和力的气息。那种略带磨砂质感的封面,握在手里沉甸甸的,让人感觉内容一定扎实可靠。内页的字体大小和行间距处理得恰到好处,即便是长时间阅读也不会感到视觉疲劳。尤其是那些代码示例部分的着色和对齐,做得非常规范,这对于我们这些需要反复对照代码和文字进行学习的读者来说,简直是福音。作者在细节上的用心可见一斑,不仅仅满足于把知识点堆砌起来,更是在思考如何以最舒适、最高效的方式将这些复杂的网络爬虫技术呈现给读者。阅读过程中,我甚至会不由自主地去观察那些插图和图表的制作水准,它们并非随意的配图,而是经过精心设计的流程图或结构示意图,极大地辅助了抽象概念的理解。这种对阅读体验的重视,让整个学习过程变得愉悦起来,不像某些技术书籍,读起来像是啃一块干巴巴的石头,让人望而生畏。整体感觉就是,这是一本从里到外都散发着匠心精神的作品,让人愿意捧在手里细细品味。
这本书在内容组织上的逻辑严密性,是我阅读过的技术书籍中最优秀的一批之一。它构建了一个清晰的知识金字塔。开篇部分打下了坚实的网络基础,然后循序渐进地过渡到爬虫的基础构建,接着深入到反爬虫策略的应对,最后在高阶部分探讨了大规模数据处理和部署优化。各个章节之间衔接自然流畅,前后呼应,形成了一个完整的学习闭环。我很少需要在不同章节间反复跳转来寻找上下文的解释,因为作者在前置知识点的铺垫上做得非常到位。例如,当我们在讲解某个高级解析技巧时,前面关于HTML结构的基础知识点已经被扎实地建立起来,阅读体验非常顺畅,知识的吸收效率极高。这种精心编排的结构,让读者能够稳扎稳打地建立起对整个爬虫生态系统的宏观认知,避免了“只见树木不见森林”的学习误区。
国人写的,鼓励下给五星
突然发现,我居然读完了一本600页的书。这是第一次读完这么厚的专业类书籍。冥冥中产生了一种自信——不论再厚的书籍,以后都将不会是我的敌人了。
适合有一定python基础,并对爬虫和网页架构有一定了解的人。
本以为这本书够接近实战了,学到最后才明白:实操类的知识还是应该在实际操作中自行摸索解决提高。一步一步跟书走就永远会被牵着鼻子。利用网络基本上可以解决所遇到的90%的问题。话说我学爬虫干嘛⊙∀⊙?
讲得很全面,也很详细,好书,好参考。