描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787111563877丛书名: 实战
产品特色
编辑推荐
内容简介
本书从基本的爬虫原理开始讲解,通过介绍Pthyon编程语言与HTML基础知识引领读者入门,之后根据当前风起云涌的云计算、大数据热潮,重点讲述了云计算的相关内容及其在爬虫中的应用,进而介绍如何设计自己的爬虫应用。主要内容分为基础篇、中级篇、深入篇,基础篇包括Python编程基础、Web前端基础、HTML基础知识、基础爬虫设计、强化爬虫技术等。中级篇包括数据存储、动态网站抓取、协议分析、Scrapy爬虫框架分析及实战案例等。高级篇包括增量式爬虫、分布式爬虫、人性化爬虫等框架设计。
目 录
目 录
前言
基础篇
第1章 回顾Python编程2
1.1 安装Python2
1.1.1 Windows上安装Python2
1.1.2 Ubuntu上的Python3
1.2 搭建开发环境4
1.2.1 Eclipse PyDev4
1.2.2 PyCharm10
1.3 IO编程11
1.3.1 文件读写11
1.3.2 操作文件和目录14
1.3.3 序列化操作15
1.4 进程和线程16
1.4.1 多进程16
1.4.2 多线程22
1.4.3 协程25
1.4.4 分布式进程27
1.5 网络编程32
1.5.1 TCP编程33
1.5.2 UDP编程35
1.6 小结36
第2章 Web前端基础37
2.1 W3C标准37
2.1.1 HTML37
2.1.2 CSS47
2.1.3 JavaScript51
2.1.4 XPath56
2.1.5 JSON61
2.2 HTTP标准61
2.2.1 HTTP请求过程62
2.2.2 HTTP状态码含义62
2.2.3 HTTP头部信息63
2.2.4 Cookie状态管理66
2.2.5 HTTP请求方式66
2.3 小结68
第3章 初识网络爬虫69
3.1 网络爬虫概述69
3.1.1 网络爬虫及其应用69
3.1.2 网络爬虫结构71
3.2 HTTP请求的Python实现72
3.2.1 urllib2/urllib实现72
3.2.2 httplib/urllib实现76
3.2.3 更人性化的Requests77
3.3 小结82
第4章 HTML解析大法83
4.1 初识Firebug83
4.1.1 安装Firebug84
4.1.2 强大的功能84
4.2 正则表达式95
4.2.1 基本语法与使用96
4.2.2 Python与正则102
4.3 强大的BeautifulSoup108
4.3.1 安装BeautifulSoup108
4.3.2 BeautifulSoup的使用109
4.3.3 lxml的XPath解析124
4.4 小结126
第5章 数据存储(无数据库版)127
5.1 HTML正文抽取127
5.1.1 存储为JSON127
5.1.2 存储为CSV132
5.2 多媒体文件抽取136
5.3 Email提醒137
5.4 小结138
第6章 实战项目:基础爬虫139
6.1 基础爬虫架构及运行流程140
6.2 URL管理器141
6.3 HTML下载器142
6.4 HTML解析器143
6.5 数据存储器145
6.6 爬虫调度器146
6.7 小结147
第7章 实战项目:简单分布式爬虫148
7.1 简单分布式爬虫结构148
7.2 控制节点149
7.2.1 URL管理器149
7.2.2 数据存储器151
7.2.3 控制调度器153
7.3 爬虫节点155
7.3.1 HTML下载器155
7.3.2 HTML解析器156
7.3.3 爬虫调度器157
7.4 小结159
中级篇
第8章 数据存储(数据库版)162
8.1 SQLite162
8.1.1 安装SQLite162
8.1.2 SQL语法163
8.1.3 SQLite增删改查168
8.1.4 SQLite事务170
8.1.5 Python操作SQLite171
8.2 MySQL174
8.2.1 安装MySQL174
8.2.2 MySQL基础177
8.2.3 Python操作MySQL181
8.3 更适合爬虫的MongoDB183
8.3.1 安装MongoDB184
8.3.2 MongoDB基础187
8.3.3 Python操作MongoDB194
8.4 小结196
第9章 动态网站抓取197
9.1 Ajax和动态HTML197
9.2 动态爬虫1:爬取影评信息198
9.3 PhantomJS207
9.3.1 安装PhantomJS207
9.3.2 快速入门208
9.3.3 屏幕捕获211
9.3.4 网络监控213
9.3.5 页面自动化214
9.3.6 常用模块和方法215
9.4 Selenium218
9.4.1 安装Selenium219
9.4.2 快速入门220
9.4.3 元素选取221
9.4.4 页面操作222
9.4.5 等待225
9.5 动态爬虫2:爬取去哪网227
9.6 小结230
第10章 Web端协议分析231
10.1 网页登录POST分析231
10.1.1 隐藏表单分析231
10.1.2 加密数据分析234
10.2 验证码问题246
10.2.1 IP代理246
10.2.2 Cookie登录249
10.2.3 传统验证码识别250
10.2.4 人工打码251
10.2.5 滑动验证码252
10.3 www>m>wap252
10.4 小结254
第11章 终端协议分析255
11.1 PC客户端抓包分析255
11.1.1 HTTP Analyzer简介255
11.1.2 虾米音乐PC端API实战分析257
11.2 App抓包分析259
11.2.1 Wireshark简介259
11.2.2 酷我听书App端API实战分析266
11.3 API爬虫:爬取mp3资源信息268
11.4 小结272
第12章 初窥Scrapy爬虫框架273
12.1 Scrapy爬虫架构273
12.2 安装Scrapy275
12.3 创建cnblogs项目276
12.4 创建爬虫模块277
12.5 选择器278
12.5.1 Selector的用法278
12.5.2 HTML解析实现280
12.6 命令行工具282
12.7 定义Item284
12.8 翻页功能286
12.9 构建Item Pipeline287
12.9.1 定制Item Pipeline287
12.9.2 激活Item Pipeline288
12.10 内置数据存储288
12.11 内置图片和文件下载方式289
12.12 启动爬虫294
12.13 强化爬虫297
12.13.1 调试方法297
12.13.2 异常299
12.13.3 控制运行状态300
12.14 小结301
第13章 深入Scrapy爬虫框架302
13.1 再看Spider302
13.2 Item Loader308
13.2.1 Item与Item Loader308
13.2.2 输入与输出处理器309
13.2.3 Item Loader Context310
13.2.4 重用和扩展Item Loader311
13.2.5 内置的处理器312
13.3 再看Item Pipeline314
13.4 请求与响应315
13.4.1 Request对象315
13.4.2 Response对象318
13.5 下载器中间件320
13.5.1 激活下载器中间件320
13.5.2 编写下载器中间件321
13.6 Spide
前言
基础篇
第1章 回顾Python编程2
1.1 安装Python2
1.1.1 Windows上安装Python2
1.1.2 Ubuntu上的Python3
1.2 搭建开发环境4
1.2.1 Eclipse PyDev4
1.2.2 PyCharm10
1.3 IO编程11
1.3.1 文件读写11
1.3.2 操作文件和目录14
1.3.3 序列化操作15
1.4 进程和线程16
1.4.1 多进程16
1.4.2 多线程22
1.4.3 协程25
1.4.4 分布式进程27
1.5 网络编程32
1.5.1 TCP编程33
1.5.2 UDP编程35
1.6 小结36
第2章 Web前端基础37
2.1 W3C标准37
2.1.1 HTML37
2.1.2 CSS47
2.1.3 JavaScript51
2.1.4 XPath56
2.1.5 JSON61
2.2 HTTP标准61
2.2.1 HTTP请求过程62
2.2.2 HTTP状态码含义62
2.2.3 HTTP头部信息63
2.2.4 Cookie状态管理66
2.2.5 HTTP请求方式66
2.3 小结68
第3章 初识网络爬虫69
3.1 网络爬虫概述69
3.1.1 网络爬虫及其应用69
3.1.2 网络爬虫结构71
3.2 HTTP请求的Python实现72
3.2.1 urllib2/urllib实现72
3.2.2 httplib/urllib实现76
3.2.3 更人性化的Requests77
3.3 小结82
第4章 HTML解析大法83
4.1 初识Firebug83
4.1.1 安装Firebug84
4.1.2 强大的功能84
4.2 正则表达式95
4.2.1 基本语法与使用96
4.2.2 Python与正则102
4.3 强大的BeautifulSoup108
4.3.1 安装BeautifulSoup108
4.3.2 BeautifulSoup的使用109
4.3.3 lxml的XPath解析124
4.4 小结126
第5章 数据存储(无数据库版)127
5.1 HTML正文抽取127
5.1.1 存储为JSON127
5.1.2 存储为CSV132
5.2 多媒体文件抽取136
5.3 Email提醒137
5.4 小结138
第6章 实战项目:基础爬虫139
6.1 基础爬虫架构及运行流程140
6.2 URL管理器141
6.3 HTML下载器142
6.4 HTML解析器143
6.5 数据存储器145
6.6 爬虫调度器146
6.7 小结147
第7章 实战项目:简单分布式爬虫148
7.1 简单分布式爬虫结构148
7.2 控制节点149
7.2.1 URL管理器149
7.2.2 数据存储器151
7.2.3 控制调度器153
7.3 爬虫节点155
7.3.1 HTML下载器155
7.3.2 HTML解析器156
7.3.3 爬虫调度器157
7.4 小结159
中级篇
第8章 数据存储(数据库版)162
8.1 SQLite162
8.1.1 安装SQLite162
8.1.2 SQL语法163
8.1.3 SQLite增删改查168
8.1.4 SQLite事务170
8.1.5 Python操作SQLite171
8.2 MySQL174
8.2.1 安装MySQL174
8.2.2 MySQL基础177
8.2.3 Python操作MySQL181
8.3 更适合爬虫的MongoDB183
8.3.1 安装MongoDB184
8.3.2 MongoDB基础187
8.3.3 Python操作MongoDB194
8.4 小结196
第9章 动态网站抓取197
9.1 Ajax和动态HTML197
9.2 动态爬虫1:爬取影评信息198
9.3 PhantomJS207
9.3.1 安装PhantomJS207
9.3.2 快速入门208
9.3.3 屏幕捕获211
9.3.4 网络监控213
9.3.5 页面自动化214
9.3.6 常用模块和方法215
9.4 Selenium218
9.4.1 安装Selenium219
9.4.2 快速入门220
9.4.3 元素选取221
9.4.4 页面操作222
9.4.5 等待225
9.5 动态爬虫2:爬取去哪网227
9.6 小结230
第10章 Web端协议分析231
10.1 网页登录POST分析231
10.1.1 隐藏表单分析231
10.1.2 加密数据分析234
10.2 验证码问题246
10.2.1 IP代理246
10.2.2 Cookie登录249
10.2.3 传统验证码识别250
10.2.4 人工打码251
10.2.5 滑动验证码252
10.3 www>m>wap252
10.4 小结254
第11章 终端协议分析255
11.1 PC客户端抓包分析255
11.1.1 HTTP Analyzer简介255
11.1.2 虾米音乐PC端API实战分析257
11.2 App抓包分析259
11.2.1 Wireshark简介259
11.2.2 酷我听书App端API实战分析266
11.3 API爬虫:爬取mp3资源信息268
11.4 小结272
第12章 初窥Scrapy爬虫框架273
12.1 Scrapy爬虫架构273
12.2 安装Scrapy275
12.3 创建cnblogs项目276
12.4 创建爬虫模块277
12.5 选择器278
12.5.1 Selector的用法278
12.5.2 HTML解析实现280
12.6 命令行工具282
12.7 定义Item284
12.8 翻页功能286
12.9 构建Item Pipeline287
12.9.1 定制Item Pipeline287
12.9.2 激活Item Pipeline288
12.10 内置数据存储288
12.11 内置图片和文件下载方式289
12.12 启动爬虫294
12.13 强化爬虫297
12.13.1 调试方法297
12.13.2 异常299
12.13.3 控制运行状态300
12.14 小结301
第13章 深入Scrapy爬虫框架302
13.1 再看Spider302
13.2 Item Loader308
13.2.1 Item与Item Loader308
13.2.2 输入与输出处理器309
13.2.3 Item Loader Context310
13.2.4 重用和扩展Item Loader311
13.2.5 内置的处理器312
13.3 再看Item Pipeline314
13.4 请求与响应315
13.4.1 Request对象315
13.4.2 Response对象318
13.5 下载器中间件320
13.5.1 激活下载器中间件320
13.5.2 编写下载器中间件321
13.6 Spide
前 言
为什么写这本书 当你看前言的时候,不得不说你做出了一个聪明的选择,因为前言中有作者对整本书的概括和学习建议,这会对大家之后的阅读产生事半功倍的效果。在聊这本书之前,首先给大家一个本书所有配套源码和说明的链接: https://github.com/qiyeboy/SpiderBook。大家可以在Github中对不懂的内容进行提问,我会尽可能地帮助大家解决问题。其实在前言开头放这个链接是挺突兀的,不过确实是担心大家不会完整地看完前言。
接下来聊一聊这本书,写这本书的原因来自于我个人的微信公众号:七夜安全博客。我经常在博客园、知乎和微信平台上发布技术文章,分享一些知识和见解,有很多热心的朋友愿意和我进行交流讨论。记得2016年4月初的某一天,有一个朋友在微信后台留言,问我怎样将Python爬虫技术学好,有什么书籍可以推荐。我当时回答了好长一段建议,但是那个朋友依然希望能推荐一本书籍帮助入门和提高。其实我特别能理解初学者的心情,毕竟我也是从初学者走过来的,但是确实挺纠结,不知从何推荐。于是,我专门找了一下这方面的书籍,只找到一本外国人写的书,中文版刚出版没多久,名字为《Python网络数据采集》。我花了半天看了一下里面的内容,整本书条理比较清晰,容易理解,但是很多知识点都谈得很浅,系统的实战项目基本上没有,更多的是一些代码片段,仅仅适合一些刚刚入门的朋友。自从这件事情以后,我就下定决心写一本Python爬虫方面的书籍,既然国内还没有人写这方面的书籍,我愿意做一个抛砖引玉的人,帮助大家更好地学习爬虫技术。
有了写书的想法后,开始列提纲,确定书的主题和内容。由于爬虫是一项实践性很强的技术,因此书的主题是以实战项目为驱动,由浅及深地讲解爬虫技术,希望你看这本书的时候是个菜鸟,认真学习完之后不再是个菜鸟,可以自主地开发Python爬虫项目了。从写书的那一刻开始,我就知道在书写完之前,我应该是没有周末了。这本书写了大半年的时间,由于我平时有写笔记、做总结的习惯,因此写书的时间不是特别长,不过直到2017年年初我依然在更新内容,毕竟爬虫技术更新得比较快,我努力将比较新的知识贡献给大家。
在写书的过程中,我的内心变得越来越平静,越来越有耐心,不断地修改更新,对每个实战项目进行反复验证和敲定,尽可能地贴近初学者的需求,希望能帮助他们完成蜕变。
后做一下自我介绍,本人是一位信息安全研究人员,比较擅长网络安全、软件逆向,同时对大数据、机器学习和深度学习有非常浓厚的兴趣,欢迎大家和我交流,共同进步。
前路多艰,学习的道路不可能一帆风顺,爬虫技术只是个开始,愿与诸君一道共克难关。
本书结构 本书总共分为三个部分:基础篇、中级篇和深入篇。
基础篇包括第1~7章,主要讲解了什么是网络爬虫、如何分析静态网站、如何开发一个完整的爬虫。
第1~2章帮助大家回顾了Python和Web方面的知识,主要是为之后的爬虫学习打下基础,毕竟之后要和Python、Web打交道。
第3~5章详细介绍了什么是网络爬虫、如何分析静态网站、如何从HTML页面中提取出有效的数据,以及对如何将数据合理地存储成各类文件以实现持久化。
第6~7章包含了两个实战项目。个项目是基础爬虫,也就是一个单机爬虫,功能是爬取百度百科的词条,并据此讲解了一个爬虫所应该具有的全部功能组件以及编码实现。第二个项目是分布式爬虫,功能和基础爬虫一致,在单机爬虫的基础上进行分布式改进,帮助大家从根本上了解分布式爬虫,消除分布式爬虫的神秘感。
中级篇包括第8~14章,主要讲解了三种数据库的存储方式、动态网站的抓取、协议分析和Scrapy爬虫框架。
第8章详细介绍了SQLite、MySQL和MongoDB三种数据库的操作方式,帮助大家实现爬取数据存储的多样化。
第9章主要讲解了动态网站分析和爬取的两种思路,并通过两个实战项目帮助大家理解。
第10章首先探讨了爬虫开发中遇到的两个问题——登录爬取问题和验证码问题,并提供了解决办法和分析实例。接着对Web端的爬取提供了另外的思路,当在PC网页端爬取遇到困难时,爬取方式可以向手机网页端转变。
第11章接着延伸第10章的问题,又提出了两种爬取思路。当在网页站点爬取遇到困难时,爬取思路可以向PC客户端和移动客户端转变,并通过两个实战项目帮助大家了解实施过程。
第12~14章由浅及深地讲解了著名爬虫框架Scrapy的运用,并通过知乎爬虫这个实战项目演示了Scrapy开发和部署爬虫的整个过程。
深入篇为第15~18章,详细介绍了大规模爬取中的去重问题以及如何通过Scrapy框架开发分布式爬虫,后又介绍了一个较新的爬虫框架PySpider。
第15章主要讲解了海量数据的去重方式以及各种去重方式的优劣比较。
第16~17章详细介绍了如何通过Redis和Scrapy的结合实现分布式爬虫,并通过云起书院实战项目帮助大家了解整个的实现过程以及注意事项。
第18章介绍了一个较为人性化的爬虫框架PySpider,并通过爬
接下来聊一聊这本书,写这本书的原因来自于我个人的微信公众号:七夜安全博客。我经常在博客园、知乎和微信平台上发布技术文章,分享一些知识和见解,有很多热心的朋友愿意和我进行交流讨论。记得2016年4月初的某一天,有一个朋友在微信后台留言,问我怎样将Python爬虫技术学好,有什么书籍可以推荐。我当时回答了好长一段建议,但是那个朋友依然希望能推荐一本书籍帮助入门和提高。其实我特别能理解初学者的心情,毕竟我也是从初学者走过来的,但是确实挺纠结,不知从何推荐。于是,我专门找了一下这方面的书籍,只找到一本外国人写的书,中文版刚出版没多久,名字为《Python网络数据采集》。我花了半天看了一下里面的内容,整本书条理比较清晰,容易理解,但是很多知识点都谈得很浅,系统的实战项目基本上没有,更多的是一些代码片段,仅仅适合一些刚刚入门的朋友。自从这件事情以后,我就下定决心写一本Python爬虫方面的书籍,既然国内还没有人写这方面的书籍,我愿意做一个抛砖引玉的人,帮助大家更好地学习爬虫技术。
有了写书的想法后,开始列提纲,确定书的主题和内容。由于爬虫是一项实践性很强的技术,因此书的主题是以实战项目为驱动,由浅及深地讲解爬虫技术,希望你看这本书的时候是个菜鸟,认真学习完之后不再是个菜鸟,可以自主地开发Python爬虫项目了。从写书的那一刻开始,我就知道在书写完之前,我应该是没有周末了。这本书写了大半年的时间,由于我平时有写笔记、做总结的习惯,因此写书的时间不是特别长,不过直到2017年年初我依然在更新内容,毕竟爬虫技术更新得比较快,我努力将比较新的知识贡献给大家。
在写书的过程中,我的内心变得越来越平静,越来越有耐心,不断地修改更新,对每个实战项目进行反复验证和敲定,尽可能地贴近初学者的需求,希望能帮助他们完成蜕变。
后做一下自我介绍,本人是一位信息安全研究人员,比较擅长网络安全、软件逆向,同时对大数据、机器学习和深度学习有非常浓厚的兴趣,欢迎大家和我交流,共同进步。
前路多艰,学习的道路不可能一帆风顺,爬虫技术只是个开始,愿与诸君一道共克难关。
本书结构 本书总共分为三个部分:基础篇、中级篇和深入篇。
基础篇包括第1~7章,主要讲解了什么是网络爬虫、如何分析静态网站、如何开发一个完整的爬虫。
第1~2章帮助大家回顾了Python和Web方面的知识,主要是为之后的爬虫学习打下基础,毕竟之后要和Python、Web打交道。
第3~5章详细介绍了什么是网络爬虫、如何分析静态网站、如何从HTML页面中提取出有效的数据,以及对如何将数据合理地存储成各类文件以实现持久化。
第6~7章包含了两个实战项目。个项目是基础爬虫,也就是一个单机爬虫,功能是爬取百度百科的词条,并据此讲解了一个爬虫所应该具有的全部功能组件以及编码实现。第二个项目是分布式爬虫,功能和基础爬虫一致,在单机爬虫的基础上进行分布式改进,帮助大家从根本上了解分布式爬虫,消除分布式爬虫的神秘感。
中级篇包括第8~14章,主要讲解了三种数据库的存储方式、动态网站的抓取、协议分析和Scrapy爬虫框架。
第8章详细介绍了SQLite、MySQL和MongoDB三种数据库的操作方式,帮助大家实现爬取数据存储的多样化。
第9章主要讲解了动态网站分析和爬取的两种思路,并通过两个实战项目帮助大家理解。
第10章首先探讨了爬虫开发中遇到的两个问题——登录爬取问题和验证码问题,并提供了解决办法和分析实例。接着对Web端的爬取提供了另外的思路,当在PC网页端爬取遇到困难时,爬取方式可以向手机网页端转变。
第11章接着延伸第10章的问题,又提出了两种爬取思路。当在网页站点爬取遇到困难时,爬取思路可以向PC客户端和移动客户端转变,并通过两个实战项目帮助大家了解实施过程。
第12~14章由浅及深地讲解了著名爬虫框架Scrapy的运用,并通过知乎爬虫这个实战项目演示了Scrapy开发和部署爬虫的整个过程。
深入篇为第15~18章,详细介绍了大规模爬取中的去重问题以及如何通过Scrapy框架开发分布式爬虫,后又介绍了一个较新的爬虫框架PySpider。
第15章主要讲解了海量数据的去重方式以及各种去重方式的优劣比较。
第16~17章详细介绍了如何通过Redis和Scrapy的结合实现分布式爬虫,并通过云起书院实战项目帮助大家了解整个的实现过程以及注意事项。
第18章介绍了一个较为人性化的爬虫框架PySpider,并通过爬
评论
还没有评论。