首页>参考读物>计算机科学与技术>计算机网络

Python爬虫开发与项目实战
作者 : 范传辉 编著
丛书名 : 实战
出版日期 : 2017-06-05
ISBN : 978-7-111-56387-7
定价 : 79.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 434
开本 : 16
原书名 :
原出版社:
属性分类: 店面
包含CD :
绝版 : 未绝版
图书简介

本书从基本的爬虫原理开始讲解,通过介绍Pthyon编程语言与HTML基础知识引领读者入门,之后根据当前风起云涌的云计算、大数据热潮,重点讲述了云计算的相关内容及其在爬虫中的应用;主要内容分为基础篇、中级篇、高级篇,基础篇包括Python编程基础、Web前端基础、基础爬虫、强化爬虫等。中级篇包括数据存储、动态网站抓取、协议分析、Scrapy爬虫框架、Scrapy爬虫实战等。高级篇包括增量式爬虫、分布式爬虫、人性化爬虫框架设计。

图书前言

为什么写这本书
  当你看前言的时候,不得不说你做出了一个聪明的选择,因为前言中有作者对整本书的概括和学习建议,这会对大家之后的阅读产生事半功倍的效果。在聊这本书之前,首先给大家一个本书所有配套源码和说明的链接: 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,并通过爬取豆瓣读书信息来演示其基本功能。
  以上就是本书的全部内容,看到以上介绍之后,是不是有赶快阅读的冲动呢?不要着急,接着往下看。
本书特点及建议
  本书总体来说是一本实战型书籍,以大量系统的实战项目为驱动,由浅及深地讲解了爬虫开发中所需的知识和技能。本书是一本适合初学者的书籍,既有对基础知识点的讲解,也涉及关键问题和难点的分析和解决,本书的初衷是帮助初学者夯实基础,实现提高。还有一点要说明,这本书对编程能力是有一定要求的,希望读者尽量熟悉Python编程。
  对于学习本书有两点建议,希望能引起读者的注意。第一点,读者可根据自己的实际情况选择性地学习本书的章节,假如之前学过Python或者Web前端的知识,前两章就可以蜻蜓点水地看一下。第二点,本书中的实战项目是根据当时网页的情况进行编写的,可能当书籍出版的时候,网页的解析规则发生改变而使项目代码失效,因此大家从实战项目中应该学习分析过程和编码的实现方式,而不是具体的代码,授人以渔永远比授人以鱼更加有价值,即使代码失效了,大家也可以根据实际情况进行修改。
致谢
  写完这本书,才感觉到写书不是一件容易的事情,挺耗费心血的。不过除此之外,更多的是一种满足感,像一种别样的创业,既紧张又刺激,同时也实现了我分享知识的心愿,算是做了一件值得回忆的事情。这是我写的第一本书,希望是一次有益的尝试。
  感谢父母的养育之恩,是他们的默默付出支持我走到今天。
  感谢我的女朋友,在每个写书的周末都没有办法陪伴她,正是她的理解和支持才让我如此准时地完稿。
  感谢长春理工大学电子学会实验室,如果没有当年实验室的培养,没有兄弟们的同甘共苦,就没有今天的我。
  感谢西安电子科技大学,它所营造的氛围使我的视野更加开阔,使我的技术水平更上一层楼。
  感谢机械工业出版社的吴怡编辑,没有她的信任和鼓励,就没有这本书的顺利出版。
  感谢Python中文社区的大力支持。
  感谢本书中所用开源项目的作者,正是他们无私的奉献才有了开发的便利。
  由于作者水平有限,书中难免有误,欢迎各位业界同仁斧正!

上架指导

计算机\网络

作者简介

范传辉 编著:暂无相关简介

图书目录

前言
基础篇
第1章 回顾Python编程 2
1.1 安装Python 2
1.1.1 Windows上安装Python 2
1.1.2 Ubuntu上的Python 3
1.2 搭建开发环境 4
1.2.1 Eclipse+PyDev 4
1.2.2 PyCharm 10
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 HTML 37
2.1.2 CSS 47
2.1.3 JavaScript 51
2.1.4 XPath 56
2.1.5 JSON 61
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 更人性化的Requests 77
3.3 小结 82
第4章 HTML解析大法 83
4.1 初识Firebug 83
4.1.1 安装Firebug 84
4.1.2 强大的功能 84
4.2 正则表达式 95
4.2.1 基本语法与使用 96
4.2.2 Python与正则 102
4.3 强大的BeautifulSoup 108
4.3.1 安装BeautifulSoup 108
4.3.2 BeautifulSoup的使用 109
4.3.3 lxml的XPath解析 124
4.4 小结 126
第5章 数据存储(无数据库版) 127
5.1 HTML正文抽取 127
5.1.1 存储为JSON 127
5.1.2 存储为CSV 132
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 SQLite 162
8.1.1 安装SQLite 162
8.1.2 SQL语法 163
8.1.3 SQLite增删改查 168
8.1.4 SQLite事务 170
8.1.5 Python操作SQLite 171
8.2 MySQL 174
8.2.1 安装MySQL 174
8.2.2 MySQL基础 177
8.2.3 Python操作MySQL 181
8.3 更适合爬虫的MongoDB 183
8.3.1 安装MongoDB 184
8.3.2 MongoDB基础 187
8.3.3 Python操作MongoDB 194
8.4 小结 196
第9章 动态网站抓取 197
9.1 Ajax和动态HTML 197
9.2 动态爬虫1:爬取影评信息 198
9.3 PhantomJS 207
9.3.1 安装PhantomJS 207
9.3.2 快速入门 208
9.3.3 屏幕捕获 211
9.3.4 网络监控 213
9.3.5 页面自动化 214
9.3.6 常用模块和方法 215
9.4 Selenium 218
9.4.1 安装Selenium 219
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>wap 252
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 安装Scrapy 275
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 定义Item 284
12.8 翻页功能 286
12.9 构建Item Pipeline 287
12.9.1 定制Item Pipeline 287
12.9.2 激活Item Pipeline 288
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 再看Spider 302
13.2 Item Loader 308
13.2.1 Item与Item Loader 308
13.2.2 输入与输出处理器 309
13.2.3 Item Loader Context 310
13.2.4 重用和扩展Item Loader 311
13.2.5 内置的处理器 312
13.3 再看Item Pipeline 314
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 Spider中间件 324
13.6.1 激活Spider中间件 324
13.6.2 编写Spider中间件 325
13.7 扩展 327
13.7.1 配置扩展 327
13.7.2 定制扩展 328
13.7.3 内置扩展 332
13.8 突破反爬虫 332
13.8.1 UserAgent池 333
13.8.2 禁用Cookies 333
13.8.3 设置下载延时与自动限速 333
13.8.4 代理IP池 334
13.8.5 Tor代理 334
13.8.6 分布式下载器:Crawlera 337
13.8.7 Google cache 338
13.9 小结 339
第14章 实战项目:Scrapy爬虫 340
14.1 创建知乎爬虫 340
14.2 定义Item 342
14.3 创建爬虫模块 343
14.3.1 登录知乎 343
14.3.2 解析功能 345
14.4 Pipeline 351
14.5 优化措施 352
14.6 部署爬虫 353
14.6.1 Scrapyd 354
14.6.2 Scrapyd-client 356
14.7 小结 357
深入篇
第15章 增量式爬虫 360
15.1 去重方案 360
15.2 BloomFilter算法 361
15.2.1 BloomFilter原理 361
15.2.2 Python实现BloomFilter 363
15.3 Scrapy和BloomFilter 364
15.4 小结 366
第16章 分布式爬虫与Scrapy 367
16.1 Redis基础 367
16.1.1 Redis简介 367
16.1.2 Redis的安装和配置 368
16.1.3 Redis数据类型与操作 372
16.2 Python和Redis 375
16.2.1 Python操作Redis 375
16.2.2 Scrapy集成Redis 384
16.3 MongoDB集群 385
16.4 小结 390
第17章 实战项目:Scrapy分布式爬虫 391
17.1 创建云起书院爬虫 391
17.2 定义Item 393
17.3 编写爬虫模块 394
17.4 Pipeline 395
17.5 应对反爬虫机制 397
17.6 去重优化 400
17.7 小结 401
第18章 人性化PySpider爬虫框架 403
18.1 PySpider与Scrapy 403
18.2 安装PySpider 404
18.3 创建豆瓣爬虫 405
18.4 选择器 409
18.4.1 PyQuery的用法 409
18.4.2 解析数据 411
18.5 Ajax和HTTP请求 415
18.5.1 Ajax爬取 415
18.5.2 HTTP请求实现 417
18.6 PySpider和PhantomJS 417
18.6.1 使用PhantomJS 418
18.6.2 运行JavaScript 420
18.7 数据存储 420
18.8 PySpider爬虫架构 422
18.9 小结 423

教学资源推荐
作者: 吴功宜 吴英 等编著
作者: (美)拉里·彼得森(Larry Peterson);(美)卡梅隆·卡斯克尼(Carmelo Cascone);(美)布莱恩·欧康纳(Brian O''''''''onnor);(美)托马斯·瓦丘斯卡(Thomas Vachuska);(美)布鲁斯·戴维(Bruce Davie) 著
作者: 蔡开裕 范金鹏
参考读物推荐
作者: [美] 彼得·亚沃斯基(Peter Yaworski) 著
作者: 冠群工作室
作者: 包建强 著
作者: 吴功宜 吴英 编著