首页>参考读物>计算机科学与技术>人工智能

Python网络爬虫技术与实战
作者 : 赵国生 王健 编著
出版日期 : 2021-01-20
ISBN : 978-7-111-67411-5
定价 : 89.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 472
开本 : 16
原书名 :
原出版社:
属性分类: 店面
包含CD : 无CD
绝版 : 未绝版
图书简介

本书是一本系统、全面地介绍Python网络爬虫的实战宝典。作者融合自己丰富的工程实践经验,紧密结合演示应用案例,内容覆盖了几乎所有网络爬虫涉及的核心技术。在内容编排上,一步步地剖析算法背后的概念与原理,提供大量简洁的代码实现,助你从零基础开始编程实现深度学习算法。
全书按照学习爬虫所涉及的核心技术从易到难,再到应用的顺序分为14章。第1章介绍Python的安装配置和基础语法。 第2章介绍爬虫类型、抓取策略以及网络基础知识。第3章介绍Python常用库。第4章介绍正则表达式的语法、匹配规则。第5章讲解PIL库、Tesseract库和TensorFlow库的语法、类型和识别方法。第6章介绍抓包利器Fiddler。第7章介绍数据存储。第8章介绍Scrapy爬虫框架。第9章介绍多线程爬虫。第10章介绍动态网页爬虫。第11章介绍分布式爬虫。第12章介绍电商网站商品信息爬虫项目。第13章介绍生活娱乐点评类信息爬虫。第14章介绍图片信息类爬虫项目。

图书特色

作者多年从事网络爬虫领域的教学及研究工作,有着丰富的实践经验。
面向初学者全面介绍Python网络爬虫的实战宝典,涵盖网络爬虫的核心概念、算法和技术实现,内容系统,案例丰富。

图书前言

为什么写作本书
大数据时代已经到来,网络爬虫技术已成为这个时代不可或缺的一项技术,企业需要数据来分析用户行为、产品的不足之处以及竞争对手的信息等,而这一切的首要条件就是数据的采集。在互联网社会中,数据是无价之宝,一切皆为数据,谁拥有了大量有用的数据,谁就拥有了决策的主动权。如何有效地采集并利用这些信息成了一个巨大的挑战,而网络爬虫是自动采集数据的有效手段。网络爬虫是一种按照一定的规则,自动抓取互联网海量信息的程序或脚本。网络爬虫的应用领域很广泛,如搜索引擎、数据采集、广告过滤、大数据分析等。
笔者多年来一直从事网络爬虫相关课程的讲授及科学研究工作,有着丰富的教学和实践经验。在内容编排上,本书采用梯度层次化结构,由浅入深地介绍爬虫的知识点、原理及应用,并结合大量实例讲解操作步骤,使读者能够快速地理解网络爬虫的核心技术。
内容介绍
全书共14章,具体内容如下:
第1章主要介绍Python的安装、配置和基础语法,以及Python的字符串、数据结构、控制语句和函数等;
第2章主要介绍爬虫的类型、爬虫的抓取策略以及深入学习爬虫所需的网络基础等相关知识;
第3章主要对爬虫技术中经常使用到的urllib、request、lxml和Beautiful Soup库等进行详细介绍,最后展示了4个利用Python爬取数据的实例;
第4章主要对Python中正则表达式的语法、匹配规则和re模块常用函数进行详细阐述,并给出了实例;
第5章主要对3种主流库(PIL库、Tesseract库和TensorFlow库)的语法、类型、识别方法和案例进行介绍;
第6章详细介绍Fiddler的安装与配置、捕获会话、QuickExec命令行的使用和Fiddler的断点功能等;
第7章主要介绍数据存储在文件中和存储在数据库中这两种存储方式;
第8章重点介绍Scrapy框架的Selector用法,以及Beautiful Soup库和CrawlSpider的使用,然后介绍了Scrapy Shell和Scrapyrt的使用;
第9章主要介绍多线程和Threading模块的基本概念;
第10章主要介绍如何对动态网页进行信息爬取,首先介绍了浏览器开发工具的使用,然后介绍了异步加载技术、AJAX技术和Selenium模拟浏览器;
第11章主要介绍分布式爬虫的原理及实现过程,然后介绍了Scrapy-redis分布式组件的工作机制和安装配置;
第12章主要介绍如何利用Selenium抓取并用pyquery解析电商网站的商品信息,然后将其保存到MongoDB;
第13章主要介绍静态网页和动态网页的爬取方法,并对请求-响应关系进行了介绍,然后介绍了请求头和请求体;
第14章主要讲解如何通过urllib模块和Scrapy框架实现图片爬虫项目,以及利用TensorFlow、KNN和CNN等机器学习框架进行训练的方法与过程。
主要特点
本书针对网络爬虫学习的特点,结合作者多年使用网络爬虫的教学和实践经验,由浅入深、从简到繁、图文并茂地介绍了Python基础语法、爬虫原理、爬虫常用库模块、正则表达式、验证码识别、抓包工具Fiddler、数据存储、Scrapy爬虫框架、多线程爬虫、动态网页爬虫和分布式爬虫等方面的内容。本书内容条理清晰、针对性强,语言通俗易懂,在讲解的过程中配合大量的实例操作,符合读者的学习习惯。每章都是从基础知识开始介绍,然后是实例分析,最后附以练习题巩固学习效果,将理论与实践紧密结合。
具体来讲,本书具有以下鲜明的特点:
内容系统,由浅入深;
案例讲解,通俗易懂;
综合实战,注重实践。
读者对象
本书适合网络爬虫初学者,以及具有一定网络爬虫基础,但希望更深入了解、掌握爬虫原理与应用的中级读者阅读。
本书可以作为本科或者大专院校网络安全、电子信息、数据科学、网络工程等相关专业的教材,也可作为从事网络爬虫相关工作的科研或者工程技术人员的参考书。
致谢
本书由哈尔滨师范大学的赵国生和哈尔滨理工大学的王健编写。其中,赵国生主要负责第1~11章的编写,王健负责第12~14章的编写。参与本书大量辅助性工作的研究生有邹伊凡、刘冬梅、张婧婷、廖玉婷、晁绵星、谢宝文等,在此表示感谢。
特别感谢以下项目对本书的支持:国家自然科学基金项目“可生存系统的自主认知模式研究”(61202458)、国家自然科学基金项目“基于认知循环的任务关键系统可生存性自主增长模型与方法”(61403109)、高等学校博士点基金项目(20112303120007)、哈尔滨市科技创新人才研究专项(2016RAQXJ036)和黑龙江省自然科学基金(F2017021)。
感谢您选择本书,虽然笔者在编写过程中力求叙述准确、完善,但由于水平有限,书中仍可能存在欠妥之处,希望您可以把对本书的意见和建议告诉我们。
最后,再次希望本书能够对您的工作和学习有所帮助!

上架指导

计算机\程序设计

封底文字

在互联网社会数据是无价之宝,一切皆为数据,谁拥有了大量有用的数据,谁就拥有了决策的主动权。如何有效地提取并利用这些数据信息成为一个巨大的挑战,而网络爬虫是一种很好的自动采集数据的通用手段。本书针对网络爬虫学习的特点,结合作者多年网络爬虫的教学和实践经验,由浅入深、从简到繁、图文并茂,详细介绍了Python基础语法、爬虫原理、爬虫常用库模块、正则表达式、验证码识别、抓包Fiddler工具、数据存储、Scrapy爬虫框架、多线性爬虫、动态网页爬虫和分布式爬虫等方面的内容。通过本书的学习,你将具备利用爬虫获取数据信息的能力,并为这个领域的发展贡献自己的力量。
通过阅读本书,你将:
学会一款合适的爬虫编程语言
掌握Python的核心爬虫模块
深入掌握正则表达式
理解掌握一种抓包分析技术
精通一款爬虫框架
掌握常见的反爬与处理策略

图书目录

前言
第1章 Python环境搭建及基础学习1
1.1 Python 3.6的安装与配置1
1.1.1 Windows下的安装1
1.1.2 Linux下的安装5
1.1.3 macOS下的安装6
1.2 IDE工具:PyCharm的安装7
1.3 基础语法11
1.3.1 第一个Python程序11
1.3.2 Python命名规范13
1.3.3 行和缩进15
1.3.4 注释和续行15
1.3.5 Python输出16
1.4 字符串18
1.4.1 字符串运算符18
1.4.2 字符串内置函数19
1.5 数据结构22
1.5.1 列表22
1.5.2 元组25
1.5.3 集合27
1.5.4 字典29
1.6 控制语句31
1.6.1 条件表达式31
1.6.2 选择结构32
1.6.3 循环结构33
1.7 函数、模块和包36
1.7.1 函数36
1.7.2 模块40
1.7.3 包42
1.8 文件的读写操作 45
1.8.1 文件读写步骤与打开模式46
1.8.2 文件的基本操作48
1.8.3 文件写入操作52
1.9 面向对象53
1.9.1 类和对象54
1.9.2 封装性58
1.9.3 继承性59
1.9.4 多态性60
1.10 本章小结61
练习题61
第2章 爬虫原理和网络基础62
2.1 爬虫是什么62
2.2 爬虫的意义62
2.3 爬虫的原理64
2.4 爬虫技术的类型66
2.4.1 聚焦爬虫技术66
2.4.2 通用爬虫技术67
2.4.3 增量爬虫技术69
2.4.4 深层网络爬虫技术70
2.5 爬虫抓取策略71
2.5.1 深度优先遍历策略 71
2.5.2 广度优先遍历策略71
2.5.3 Partial PageRank策略72
2.5.4 大站优先策略72
2.5.5 反向链接数策略73
2.5.6 OPIC策略 73
2.6 反爬虫和反反爬虫73
2.6.1 反爬虫73
2.6.2 反反爬虫77
2.7 网络基础79
2.7.1 网络体系结构79
2.7.2 网络协议79
2.7.3 Socket编程86
2.8 本章小结88
练习题88
第3章 Python常用库89
3.1 Python库的介绍89
3.1.1 常用标准库89
3.1.2 安装使用第三方库91
3.2 urllib库92
3.2.1 urlopen()函数用法93
3.2.2 urlretrieve()函数用法95
3.2.3 URL编码和URL解码96
3.2.4 urlparse()和urlsplit()函数用法97
3.3 request库99
3.3.1 request库的基本使用99
3.3.2 request库的高级用法109
3.4 lxml库113
3.4.1 lxml库的安装和使用113
3.4.2 XPath介绍114
3.4.3 XPath语法116
3.4.4 lxml和XPath的结合使用119
3.5 Beautiful Soup库122
3.5.1 Beautiful Soup库的安装和使用123
3.5.2 提取数据125
3.5.3 CSS选择器131
3.6 实战案例134
3.6.1 使用Beautiful Soup解析网页134
3.6.2 微信公众号爬虫135
3.6.3 爬取豆瓣读书TOP500136
3.6.4 使用urllib库爬取百度贴吧137
3.7 本章小结139
练习题139
第4章 正则表达式140
4.1 概念介绍140
4.2 正则表达式语法141
4.2.1 正则模式的字符141
4.2.2 运算符优先级142
4.3 匹配规则143
4.3.1 单字符匹配规则143
4.3.2 多字符匹配规则144
4.3.3 边界匹配146
4.3.4 分组匹配147
4.4 re模块常用函数150
4.4.1 re.match函数150
4.4.2 re.search函数152
4.4.3 re.compile函数153
4.4.4 re.sub函数155
4.4.5 re.findall函数156
4.4.6 re.finditer函数157
4.4.7 re.split函数157
4.5 本章小结158
练习题158
第5章 验证码159
5.1 PIL库159
5.1.1 PIL库的安装159
5.1.2 PIL库的常用函数160
5.1.3 PIL库的应用163
5.1.4 应用PIL到实际开发169
5.2 Tesseract库172
5.2.1 Tesseract库的安装172
5.2.2 Tesseract库的使用174
5.2.3 Tesseract库的识别训练174
5.3 TensorFlow库180
5.3.1 TensorFlow库的安装180
5.3.2 TensorFlow基本操作184
5.3.3 TensorFlow基础架构186
5.3.4 TensorFlow创建线性回归模型189
5.3.5 TensorFlow识别知乎验证码190
5.4 4种验证码的解决思路191
5.5 OCR处理验证码194
5.6 实战案例195
5.7 本章小结199
练习题199
第6章 抓包利器Fiddler200
6.1 Fiddler简介200
6.2 Fiddler的安装和配置200
6.2.1 Fiddler的安装201
6.2.2 Fiddler的配置202
6.3 Fiddler捕获会话205
6.4 QuickExec命令行的使用207
6.5 Fiddler断点功能209
6.6 Fiddler的实用工具210
6.7 实战案例212
6.7.1 使用Fiddler抓取数据并分析212
6.7.2 使用Fiddler抓取HTTPS流量214
6.7.3 使用Fiddler抓取手机应用215
6.8 本章小结219
练习题219
第7章 数据存储220
7.1 数据的基本存储220
7.1.1 数据存储至TXT220
7.1.2 数据存储至CSV222
7.1.3 数据存储至JSON223
7.2 数据存储至MySQL数据库227
7.2.1 配置MySQL服务227
7.2.2 安装PyMySQL228
7.2.3 创建示例项目230
7.2.4 PyMySQL基本操作231
7.3 数据存储至MongoDB数据库231
7.4 数据存储至XML234
7.5 常见数据存储方式的比较235
7.6 本章小结237
练习题237
第8章 Scrapy爬虫框架238
8.1 Scrapy框架介绍238
8.2 Scrapy框架详解239
8.2.1 框架内组件及作用239
8.2.2 Scrapy运行流程240
8.2.3 数据流向240
8.3 Scrapy框架中的Selector240
8.4 Beautiful Soup库的使用246
8.4.1 简单示例246
8.4.2 四大对象种类247
8.4.3 遍历文档树249
8.4.4 搜索文档树249
8.4.5 CSS选择器253
8.5 CrawlSpider的使用254
8.5.1 Spider的简单用法254
8.5.2 CrawlSpider概述254
8.5.3 使用CrawlSpider获取rules256
8.5.4 使用CrawlSpider进行模拟登录257
8.6 Scrapy Shell的使用257
8.6.1 启动Scrapy Shell258
8.6.2 功能函数258
8.6.3 Scrapy对象258
8.6.4 Scrapy Shell示例258
8.7 Scrapyrt的使用259
8.7.1 GET请求259
8.7.2 POST请求261
8.8 Scrapy对接Selenium262
8.9 实战案例264
8.9.1 Scrapy知乎信息爬取264
8.9.2 Scrapy微博信息爬取268
8.9.3 Scrapy机票信息爬取272
8.10 本章小结274
练习题274
第9章 多线程爬虫275
9.1 多线程和Threading模块275
9.1.1 多线程定义和特点275
9.1.2 Threading模块276
9.2 使用Thread类创建实例277
9.2.1 可传递函数的Thread类实例277
9.2.2 可调用的Thread类实例278
9.2.3 派生Thread子类279
9.3 多线程方法的使用280
9.3.1 多线程创建280
9.3.2 多线程冲突及解决283
9.3.3 使用Semaphore调度线程285
9.3.4 生产者-消费者模式286
9.3.5 共享全局变量及锁机制288
9.4 Queue线程安全队列289
9.5 实战案例291
9.5.1 多线程爬取糗事百科292
9.5.2 多线程爬取网站图片296
9.6 本章小结298
练习题298
第10章 动态网页爬虫299
10.1 浏览器开发者工具299
10.1.1 调试工具的介绍299
10.1.2 调试工具的使用示例306
10.2 异步加载技术309
10.2.1 异步加载技术介绍309
10.2.2 AJAX数据爬取310
10.3 表单交互与模拟登录314
10.3.1 表单交互314
10.3.2 模拟登录315
10.4 Selenium模拟浏览器316
10.4.1 Selenium操作浏览器316
10.4.2 Selenium和ChromeDriver的配合使用332
10.5 实战案例337
10.5.1 Selenium职位信息爬取338
10.5.2 Selenium直播平台数据爬取339
10.6 本章小结341
练习题341
第11章 分布式爬虫342
11.1 分布式爬虫概述342
11.1.1 主从分布式爬虫343
11.1.2 对等分布式爬虫343
11.2 Scrapy-redis分布式组件345
11.2.1 Scrapy-redis简介346
11.2.2 Scrapy-redis工作机制348
11.2.3 Scrapy-redis安装配置349
11.2.4 Scrapy-redis常用配置356
11.2.5 Scrapy-redis键名介绍357
11.2.6 Scrapy-redis简单示例357
11.3 redis数据库358
11.4 Scrapy-redis源码分析364
11.5 通过scrapy_redis实现分布式爬虫369
11.6 实战案例371
11.7 本章小结376
练习题377
第12章 电商网站商品信息爬虫项目378
12.1 商品信息爬虫功能分析378
12.1.1 商品信息爬虫接口分析378
12.1.2 商品信息爬虫页面分析380
12.2 商品信息爬虫实现思路380
12.2.1 Selenium环境配置380
12.2.2 pyquery环境配置381
12.3 电商网站商品信息编写实战381
12.3.1 获取电商网站商品信息列表381
12.3.2 电商网站商品信息列表解析383
12.3.3 保存爬取的商品信息385
12.3.4 电商网站商品信息的页码遍历386
12.4 pyquery解析电商网站商品信息388
12.4.1 pyquery调用CSS选择器389
12.4.2 pyquery使用parent()获取父节点391
12.4.3 pyquery遍历商品信息393
12.4.4 pyquery获取商品信息内部文本395
12.4.5 CSS选择器398
12.5 运行代码399
12.5.1 爬虫的Chrome Headless模式400
12.5.2 爬虫对接Firefox400
12.5.3 爬虫对接PhantomJS400
12.6 本章小结401
练习题401
第13章 生活娱乐点评类信息爬虫项目402
13.1 功能分析402
13.1.1 项目描述402
13.1.2 静态网页抓取402
13.1.3 动态网页抓取404
13.2 请求-响应关系410
13.2.1 请求对象410
13.2.2 请求方法410
13.3 请求头和请求体411
13.3.1 请求头412
13.3.2 响应412
13.3.3 保存响应结果412
13.4 通过Selenium模拟浏览器抓取413
13.4.1 Selenium的安装413
13.4.2 Selenium的实践案例414
13.4.3 Selenium获取文章的所有评论414
13.5 实战演练Scrapy框架实例415
13.5.1 编写spider416
13.5.2 编写item.py417
13.5.3 为items对象赋值417
13.5.4 编写piplines.py418
13.5.5 配置setting.py418
13.5.6 完整代码及结果419
13.6 调试与运行421
13.7 本章小结422
练习题422
第14章 图片信息类爬虫项目423
14.1 功能分析423
14.2 实现思路423
14.2.1 urllib模块的使用424
14.2.2 Scrapy框架的使用426
14.3 程序执行429
14.4 实战演练图片验证码429
14.4.1 开发环境与工具429
14.4.2 Anaconda3的安装430
14.4.3 问题步骤434
14.4.4 解决步骤434
14.4.5 图片预处理代码435
14.4.6 图片切割437
14.4.7 KNN训练437
14.4.8 CNN加载数据439
14.4.9 训练CNN模型440
14.4.10 CNN模型预测442
14.5 调试运行443
14.6 本章小结444
练习题444
练习题答案445

教学资源推荐
作者: [美] 丹尼尔·怀特纳克(Daniel Whitenack)著
作者: 周丽芳 李伟生 黄颖 编著
作者: (加)David L. Poole, Alan K. Mackworth 著
作者: 蔡自兴 王勇 编著
参考读物推荐
作者: [俄] 马克西姆·拉潘(Maxim Lapan) 著
作者: [美]曼纽尔·阿米纳特吉(Manuel Amunategui)迈赫迪·洛佩伊(Mehdi Roopaei) 著
作者: [美] 罗伊·希尔克罗特(Roy Shilkrot),[西班牙] 大卫·米兰·埃斯克里瓦(David Millán Escrivá) 著