编辑推荐

作为Python网络数据采集的入门书籍,力求囊括以数据采集为中心的各方面知识与经验技巧,以期帮助读者快速上手,实现自己的网络爬虫项目。

内容简介

海量数据的产生和大数据的高价值利用,让数据爬取变得日益重要。《Python数据爬取技术与实战手册》为读者介绍了如何使用Python编写网络爬虫批量采集互联网数据,如何处理与保存采集到的信息,以及如何从众多纷乱的数据中提取到真正有用的信息。《Python数据爬取技术与实战手册》末尾介绍了几种常用的数据可视化工具。让读者能够从头到尾完整地完成网络数据的采集与分析项目。
Python数据爬取技术与实战手册》理论与实例并重,既能够帮助数据从业者快速提升工作效率,又可以帮助大数据爱好者用网络爬虫方便生活。

作者简介

郭卡,辽宁师范大学硕士毕业,安徽外国语学院计算机教师,多年从事一线计算机教学及计算机等级培训工作,擅长计算机网络技术和教育学类数据统计分析技术,曾在中文核心期刊发表多篇技术论文。
戴亮,中南大学硕士毕业,数据挖掘从业者;在网络爬虫、数据分析、机器学习等领域有丰富的实战经验,在简书中贡献了许多高质量的技术文章,深受读者好评。

目录

第1章最佳拍档:网络爬虫与Python语言
1.1什么是网络爬虫1
1.1.1网络爬虫的定义2
1.1.2网络爬虫的工作流程2
1.1.3网络爬虫的分类3
1.1.4为什么选择用Python编写网络爬虫4
1.1.5编写爬虫的注意事项4
1.2Python环境配置5
1.2.1Python的安装5
1.2.2Python第三方库的安装6
【示例1-1】使用包管理器安装科学计算库numpy6
【示例1-2】源代码方式安装xlrd库(使用setup.py文件)7
【示例1-3】源代码方式安装xlrd库(使用whl文件)8
1.2.3Python开发工具的选择8
【示例1-4】将文本编辑器配置成Python开发工具(以Notepad++为例)12
1.3Python基本语法13
1.3.1Python书写规则13
1.3.2Python基本数据类型18
【示例1-5】以列表a=['a','a','b','c','d','d','e']为例讲解List的基本操作21
【示例1-6】以列表a=[1,2,3,4,5,6,7,8]为例讲解数据型列表的属性分析23
【示例1-7】以字典a为例,讲解字典的基本操作25
1.3.3Python独有数据生成方式:推导式29
1.3.4函数30
【示例1-8】局部变量与全局变量重名的运行结果与解决方案31
1.3.5条件与循环34
1.3.6类与对象35
【示例1-9】请输出学生信息中某学生的班级、姓名和总分数35
1.3.7Python2代码转为Python3代码36
【示例1-10】以文件test.py为例,介绍Python2代码到Python3代码的转化37
第2章应知应会:网络爬虫基本知识
2.1网页的构成38
2.1.1HTML基本知识39
2.1.2网页中各元素的排布46
【示例2-1】以新浪博客文本为例,学习各类元素的排布规则46
2.2正则表达式48
2.2.1正则表达式简介48
2.2.2Python语言中的正则表达式49
【示例2-2】正则表达式应用中,当匹配次数达到10万时,预先编译对正则表达式性能的提升51
2.2.3综合实例:正则表达式的实际应用——在二手房网站中提取有用信息52
2.3汉字编码问题54
2.3.1常见编码简介54
2.3.2常用编程环境的默认编码55
2.3.3网页编码56
2.3.4编码转换56
2.4网络爬虫的行为准则57
2.4.1遵循Robots协议57
2.4.2网络爬虫的合法性59
第3章静态网页爬取
3.1Python常用网络库61
3.1.1urllib库62
【示例3-1】从众多代理IP中选取可用的IP63
【示例3-2】百度搜索“Python”url演示Parse模块应用66
3.1.2综合实例:批量获取高清壁纸68
3.1.3requests库71
【示例3-3】用requests实现豆瓣网站模拟登录72
3.1.4综合实例:爬取历史天气数据预测天气变化74
3.2网页解析工具77
3.2.1更易上手:BeautifulSoup77
【示例3-4】解析HTML文档(以豆瓣读书《解忧杂货店》为例)78
3.2.2更快速度:lxml81
3.2.3BeautifulSoup与lxml对比82
【示例3-5】爬取豆瓣读书中近5年出版的评分7分以上的漫画82
【示例3-6】BeautifulSoup和lxml解析同样网页速度测试(基于网易新闻首页)85
3.2.4综合实例:在前程无忧中搜索并抓取不同编程语言岗位的平均收入85
第4章动态网页爬取
4.1AJAX技术89
4.1.1获取AJAX请求90
4.1.2综合实例:抓取简书百万用户个人主页91
4.2Selenium操作浏览器97
4.2.1驱动常规浏览器97
4.2.2驱动无界面浏览器100
4.2.3综合实例:模拟登录新浪微博并下载短视频101
4.3爬取移动端数据103
4.3.1Fiddler工具配置103
4.3.2综合实例:Fiddle实际应用——爬取大角虫漫画信息105
第5章统一架构与规范:网络爬虫框架
5.1最流行的网络爬虫框架:Scrapy111
5.1.1安装须知与错误解决方案111
5.1.2Scrapy的组成与功能112
5.2综合实例:使用Scrapy构建观影指南118
5.2.1网络爬虫准备工作119
5.2.2编写Spider121
5.2.3处理Item123
5.2.4运行网络爬虫124
5.2.5数据分析124
5.3更易上手的网络爬虫框架:Pyspider126
5.3.1创建Pyspider项目127
【示例5-1】利用Pyspider创建抓取煎蛋网项目并测试代码127
5.3.2运行Pyspider项目129
第6章反爬虫应对策略
6.1设置Headers信息132
6.1.1User-Agent133
6.1.2Cookie136
6.2建立IP代理池138
6.2.1建立IP代理池的思路138
6.2.2建立IP代理池的步骤138
6.3验证码识别140
6.3.1识别简单的验证码141
【示例6-1】通过pytesseract库识别8个简单的验证码,并逐步提升准确率141
6.3.2识别汉字验证码146
6.3.3人工识别复杂验证码146
6.3.4利用Cookie绕过验证码149
第7章提升网络爬虫效率
7.1网络爬虫策略152
7.1.1广度优先策略153
7.1.2深度优先策略153
7.1.3按网页权重决定爬取优先级154
7.1.4综合实例:深度优先和广度优先策略效率对比
(抓取慕课网实战课程地址)154
7.2提升网络爬虫的速度158
7.2.1多线程159
【示例7-1】使用4个线程同步抓取慕课网实战课程地址(基于深度优先策略)159
7.2.2多进程161
7.2.3分布式爬取162
7.2.4综合实例:利用现有知识搭建分布式爬虫(爬取百度贴吧中的帖子)162
第8章更专业的爬取数据存储与处理:数据库
8.1受欢迎的关系型数据库:MySQL170
8.1.1MySQL简介170
8.1.2MySQL环境配置171
8.1.3MySQL的查询语法174
【示例8-1】使用MySQL查询语句从数据表Countries中选取面积大于10000km2的欧洲国家177
8.1.4使用pymysql连接MySQL数据库178
8.1.5导入与导出数据179
8.2应对海量非结构化数据:MongoDB数据库180
8.2.1MongoDB简介180
8.2.2MongoDB环境配置182
8.2.3MongoDB基本语法186
8.2.4使用PyMongo连接MongoDB188
8.2.5导入/导出JSON文件189
第9章Python文件读取
9.1Python文本文件读写190
9.2数据文件CSV192
9.3数据交换格式JSON193
9.3.1JSON模块的使用194
【示例9-1】请用JSON模块将data变量(包含列表、数字和字典的数组)转换成字符串并还原194
9.3.2JSON模块的数据转换195
9.4Excel读写模块:xlrd195
9.4.1读取Excel文件196
9.4.2写入Excel单元格197
9.5PowerPoint文件读写模块:pptx197
9.5.1读取pptx197
9.5.2写入pptx198
9.6重要的数据处理库:Pandas库199
9.6.1使用pandas库处理CSV文件200
9.6.2使用pandas库处理JSON文件200
9.6.3使用pandas库处理HTML文件202
【示例9-2】用read_html()将某二手房网站表格中的数据提取出来203
9.6.4使用pandas库处理SQL文件203
9.7调用Office软件扩展包:win32com204
9.7.1读取Excel文件204
9.7.2读取Word文件205
9.7.3读取PowerPoint文件205
9.8读取PDF文件206
9.8.1读取英文PDF文档206
9.8.2读取中文PDF文档208
9.8.3读取扫描型PDF文档210
9.9综合实例:自动将网络文章转化为PPT文档211
第10章通过API获取数据
10.1免费财经API——TuShare214
10.1.1获取股票交易数据215
【示例10-1】获取某股票2017年8月份的周K线数据215
10.1.2获取宏观经济数据217
10.1.3获取电影票房数据219
10.2新浪微博API的调用220
10.2.1创建应用220
10.2.2使用API222
10.3调用百度地图API225
10.3.1获取城市经纬度226
【示例10-2】使用百度地图API获取南京市的经纬度信息226
10.3.2定位网络IP226
【示例10-3】使用百度API定位IP地址(223.112.112.144)226
10.3.3获取全景静态图227
10.4调用淘宝API228
第11章网络爬虫工具
11.1使用Excel采集网页数据231
11.1.1抓取网页中的表格232
11.1.2抓取非表格的结构化数据233
11.2使用WebScraper插件237
11.2.1安装WebScraper237
11.2.2WebScraper的使用238
【示例11-1】使用WebScraper爬取当当网小说书目238
11.3商业化爬取工具240
11.3.1自定义采集241
【示例11-2】利用网络爬虫软件八爪鱼自定义采集当当网图书信息241
11.3.2网站简易采集245
【示例11-3】利用网络爬虫软件八爪鱼的网络简易采集方式抓取房天下网中的合肥新房房价数据245
第12章数据分析工具:科学计算库
12.1单一类型数据高效处理:Numpy库248
12.1.1ndarray数组248
【示例12-1】对一维ndarray数组a进行读取、修改和切片操作249
【示例12-2】对多维ndarray数组b进行读取、修改和切片操作250
【示例12-3】对多维ndarray数组n进行矩阵运算(拼接、分解、转置、行列式、
求逆和点乘)252
12.1.2Numpy常用函数253
【示例12-4】对多维ndarray数组a进行统计操作253
【示例12-5】对一维ndarray数组a进行数据处理操作(去重、直方图统计、相关
系数、分段、多项式拟合)256
12.1.3Numpy性能优化257
12.2复杂数据全面处理:Pandas库258
12.2.1Pandas库中的4种基础数据结构258
12.2.2Pandas使用技巧264
【示例12-6】对比普通for循环遍历与iterrows()遍历方法的速度差异264
12.3Python机器学习库:Scikit-learn268
【示例12-7】以鸢尾花数据为例,使用Sklearn进行监督学习的基本建模过程(决策树模型)269
第13章掌握绘图软件:将数据可视化
13.1应用广泛的数据可视化:Excel绘图271
13.1.1绘制(对比)柱形图272
13.1.2绘制饼图并添加标注273
13.1.3其他图形275
13.1.4Excel频率分布直方图276
【示例13-1】利用Excel绘制全国各省市城镇人员平均工资频率分布直方图276
13.2适合处理海量数据:Tableau绘图278
13.2.1基本操作:导入数据278
13.2.2绘制(多重)柱状对比图279
13.2.3智能显示:图形转换281
13.2.4绘制频率分布直方图281
【示例13-2】利用Tableau绘制2015年我国城镇就业人员平均工资频率分布直方图281
13.3完善的二维绘图库:Matplotlib/Seaborn283
13.3.1使用Matplotlib绘制函数图表283
13.3.2使用Matplotlib绘制统计图表285
13.4优化:Seaborn的使用289
13.5综合实例:利用Matplotlib构建合肥美食地图293
13.5.1绘制区域地图293
13.5.2利用百度地图Web服务API获取美食地址294
13.5.3数据分析298
13.5.4绘制热力图完善美食地图展示300

前言/序言

过去的几十年里,各行各业都出现了大规模的数据增长,尤其是在移动互联网快速发展的今天,数据体量巨大、处理速度快和价值密度低是目前大数据的显著特征。随着大数据时代的到来,如何利用大数据技术将海量数据快速地转换为有用的知识与信息资源已成为IT界广泛关注的焦点,也是IT人士的必备技能。要真正地享受到大数据时代的便利,获取到能够改善生活、提高工作效率的信息,必须具备快速获取并分析数据的能力。网络爬虫已经成为人们工作、学习和生活中获取海量数据不可或缺的工具,广泛应用于娱乐、金融、科研等众多领域,例如:求职者可以利用网络爬虫抓取招聘信息,快速筛选出适合自己的岗位;购房者可以抓取二手房信息,帮助做出购房决策;业余时间人们可以抓取影评信息,挑选优质电影放松身心;股民也可以获取股票数据、新闻报道,掌握财经动态;在科研项目中使用网络爬虫爬取并分析当前该领域的研究趋势,能够节约大量时间和精力,并为科研项目提供方向性的指导。
对于零基础的读者,在自学网络爬虫前需要补习Python和计算机网络知识,需要大量时间。《Python数据爬取技术与实战手册》中,作者将结合自身学习Python网络爬虫的经验,为大家筛选学习网络爬虫所需要的必备知识,书中的理论知识都将通过实例应用的形式展现,帮助大家在短时间内掌握基本的网络爬虫技能。为了方便读者学习了网络爬虫之后能够将采集到的数据加以利用,书中还会进一步介绍如何使用Python进行数据分析的相关技术。
作者总结了学习心得体会,采用适合初学者的学习方法写成此书,希望对大家有所帮助。因作者水平和成书时间所限,《Python数据爬取技术与实战手册》难免有疏漏或不当之处,敬请读者指正。
Python数据爬取技术与实战手册》特色
1.实例优先
读万卷书不如行万里路,虽然Python是一门简单明了的编程语言,但对于初学者来说,即使充分理解了其基础理论和算法,在实践中还是会碰到诸多难题。
Python数据爬取技术与实战手册》采用理论与实践操作相结合的方式帮助读者融入Python的世界,其例举的网站均为常见网站,如微博、豆瓣、百度、简书等,方便读者在进行编程练习时也能获取到一定的有用信息。秉承“益于理解,重在掌握”的原则,笔者有意用较多的实例来展示这些内容,希望读者能在学习中及时获得反馈,提高学习效率。
2.内容全面
Python数据爬取技术与实战手册》介绍了Python语言中与网络爬虫以及数据分析有关的众多第三方库的使用方法,涵盖了网络访问、网页解析、数据存储、数据分析、数据可视化等各方面的内容;适合初学者快速熟悉网络爬虫及数据分析技术的细节。
3.讲解详尽
Python数据爬取技术与实战手册》对重要的第三方库如urllib、BeautifulSoup、lxml、Scrapy、Numpy等均进行了翔实地讲解,对重点函数进行了实例说明,并且每个实例均由浅入深地从项目思路开始层层剖析,帮助读者建立起数据抓取及分析的思维,做到“授人以渔”,使读者能够快速脱离书本,建立自己的项目。
读者须知
?版本的选择
要运行书中代码,你需要安装Python3.4.4及以上版本,因为示例代码无法在Python2环境中运行。
?操作系统环境
书中代码运行在Windows操作系统中,在Linux环境下运行可能会出现报错。
?浏览器的使用
书中大多数浏览器操作都是基于Chrome、Firefox等,若使用IE浏览器,对应的操作方法将会有所变化,耗费不必要的时间。
Python数据爬取技术与实战手册》结构
Python数据爬取技术与实战手册》作为Python网络数据采集的入门书籍,力求囊括以数据采集为中心的各方面知识与经验技巧,以期帮助读者快速上手,实现自己的网络爬虫项目。
(1)《Python数据爬取技术与实战手册》从框架上主要讲了以下内容:
?用Python语言进行网络爬虫实战编程;
?各种应用场景下的网络爬虫技术;
?爬虫工具与技能,以及如何应用。
(2)《Python数据爬取技术与实战手册》从讲解顺序上可以分为以下三个部分:
?第1~2章为入门理论部分,主要讲解Python语言与网络爬虫的基础知识;
?第3~7章为网络爬虫实践部分,主要介绍网络爬虫的各项技术内容;
?第8~13章是爬虫工具部分,读者除了需要掌握爬虫编写技能外,还需要了解与爬虫相关的采集、存储、分析、可视化工具的使用,才能将网络爬虫项目做得更加完善。
Python数据爬取技术与实战手册》读者对象
?Python语言初学者
网络爬虫无疑是学习Python语言的最佳切入点,初学者能够通过网络爬虫的编写快速地获取正面反馈,提升学习兴趣,并能够在编程过程中学习到更深层次的Python应用知识。
?数据运营与分析人员
Python数据爬取技术与实战手册》中介绍了很多数据采集相关的工具及技能,这些工具能够简化数据运营及分析人员的日常工作,并提升相关从业人员处理实际问题的能力。
?大中专院校社科类学生或社科类科研人员
社科类学科往往需要大量的社会公开数据支持才能写出优质的论文,网络爬虫可以说是最简单高效地数据获取途径;对社科类学生和科研人员来说,网络爬虫能够极大地提升学习和研究的效率,是进行学术研究的必备技能。
?对数据采集和分析有兴趣的各类人员
读者可以通过《Python数据爬取技术与实战手册》入门及巩固数据采集和分析的相关技术,并将之应用于感兴趣的项目中,做到学以致用。
Python数据爬取技术与实战手册》学习建议
根据《Python数据爬取技术与实战手册》的知识结构,我们对不同基础的读者提出如下学习建议:
?如果您是一名零基础的读者,对Python语言和网络爬虫知之甚少,建议从第1章开始按顺序阅读《Python数据爬取技术与实战手册》;
?如果您有一定的Python语言基础,而对网络爬虫不太了解,建议您从第2章开始学习;
?如果您对Python语言和网络爬虫都有一定的了解,想快递搭建爬虫项目,建议您从第3章开始阅读,并重点阅读各章示例与综合实例。
?《Python数据爬取技术与实战手册》第三部分为爬虫相关技术介绍,适合在项目开发过程中进行查阅。
学习完《Python数据爬取技术与实战手册》中的知识之后,相信读者已具备了编写小型爬虫项目的能力,后续还可以通过实际爬虫项目来提升编写大规模高并发爬虫项目的能力。希望读者能够在未来的学习中不断提升自己对核心技术的掌控能力,进阶为网络爬虫领域的专家。
Python数据爬取技术与实战手册》编者
Python数据爬取技术与实战手册》1~11章由一线计算机教师郭卡编写,12~13章由戴亮编写,最后由郭卡进行《Python数据爬取技术与实战手册》统稿。《Python数据爬取技术与实战手册》编写过程中得到了辽宁师范大学计算机与信息技术学院各位老师的鼎力相助,在此深表感谢。

其他推荐