书海网短评:
从爬虫软件开发到自己动手开发爬虫框架从原理到实践,深入浅出,热门爬虫核心技术全掌握涵盖丰富的爬虫工具、库、框架,十余个实战项目资深爬虫工程师倾力奉献,入门、进阶、求职必备
从爬虫软件开发到自己动手开发爬虫框架
从原理到实践,深入浅出,热门爬虫核心技术全掌握
涵盖丰富的爬虫工具、库、框架,十余个实战项目
资深爬虫工程师倾力奉献,入门、进阶、求职必备
《实战Python网络爬虫》从原理到实践,循序渐进地讲述了使用Python开发网络爬虫的核心技术。《实战Python网络爬虫》从逻辑上可分为基础篇、实战篇和爬虫框架篇三部分。基础篇主要介绍了编写网络爬虫所需的基础知识,包括网站分析、数据抓取、数据清洗和数据入库。网站分析讲述如何使用Chrome和Fiddler抓包工具对网站做全面分析;数据抓取介绍了Python爬虫模块Urllib和Requests的基础知识;数据清洗主要介绍字符串操作、正则和BeautifulSoup的使用;数据入库讲述了MySQL和MongoDB的操作,通过ORM框架SQLAlchemy实现数据持久化,进行企业级开发。实战篇深入讲解了分布式爬虫、爬虫软件的开发、12306抢票程序和微博爬取等。框架篇主要讲述流行的爬虫框架Scrapy,并以Scrapy与Selenium、Splash、Redis结合的项目案例,让读者深层次了解Scrapy的使用。此外,《实战Python网络爬虫》还介绍了爬虫的上线部署、如何自己动手开发一款爬虫框架、反爬虫技术的解决方案等内容。
《实战Python网络爬虫》使用Python3.X编写,技术先进,项目丰富,适合欲从事爬虫工程师和数据分析师岗位的初学者、大学生和研究生使用,也很适合有一些网络爬虫编写经验,但希望更加全面、深入理解Python爬虫的开发人员使用。
黄永祥,CSDN博客专家和签约讲师,多年软件研发经验,主要从事机器人流程系统研发、大数据系统研发、网络爬虫研发以及自动化运维系统研发。擅长使用Python编写高质量代码,对Python有深入研究,热爱分享和新技术的探索。
目录
第1章理解网络爬虫1
1.1爬虫的定义1
1.2爬虫的类型2
1.3爬虫的原理2
1.4爬虫的搜索策略4
1.5爬虫的合法性与开发流程5
1.6本章小结6
第2章爬虫开发基础7
2.1HTTP与HTTPS7
2.2请求头9
2.3Cookies10
2.4HTML11
2.5JavaScript12
2.6JSON14
2.7Ajax14
2.8本章小结15
第3章Chrome分析网站16
3.1Chrome开发工具16
3.2Elements标签17
3.3Network标签18
3.4分析QQ音乐20
3.5本章小结23
第4章Fiddler抓包24
4.1Fiddler介绍24
4.2Fiddler安装配置24
4.3Fiddler抓取手机应用26
4.4Toolbar工具栏29
4.5WebSession列表30
4.6View选项视图32
4.7Quickexec命令行33
4.8本章小结34
第5章爬虫库Urllib35
5.1Urllib简介35
5.2发送请求36
5.3复杂的请求37
5.4代理IP38
5.5使用Cookies39
5.6证书验证40
5.7数据处理41
5.8本章小结42
第6章爬虫库Requests43
6.1Requests简介及安装43
6.2请求方式44
6.3复杂的请求方式45
6.4下载与上传47
6.5本章小结49
第7章Requests-Cache爬虫缓存50
7.1简介及安装50
7.2在Requests中使用缓存50
7.3缓存的存储机制53
7.4本章小结54
第8章爬虫库Requests-HTML55
8.1简介及安装55
8.2请求方式56
8.3数据清洗56
8.4Ajax动态数据抓取59
8.5本章小结61
第9章网页操控与数据爬取62
9.1了解Selenium62
9.2安装Selenium63
9.3网页元素定位66
9.4网页元素操控70
9.5常用功能73
9.6实战:百度自动答题80
9.7本章小结85
第10章手机App数据爬取86
10.1Appium简介及原理86
10.2搭建开发环境87
10.3连接Android系统92
10.4App的元素定位97
10.5App的元素操控99
10.6实战:淘宝商品采集102
10.7本章小结107
第11章Splash、Mitmproxy与Aiohttp109
11.1Splash动态数据抓取109
11.1.1简介及安装109
11.1.2使用Splash的API接口112
11.2Mitmproxy抓包116
11.2.1简介及安装116
11.2.2用Mitmdump抓取爱奇艺视频116
11.3Aiohttp高并发抓取119
11.3.1简介及使用119
11.3.2Aiohttp异步爬取小说排行榜123
11.4本章小结126
第12章验证码识别128
12.1验证码的类型128
12.2OCR技术129
12.3第三方平台131
12.4本章小结134
第13章数据清洗136
13.1字符串操作136
13.1.1截取136
13.1.2替换137
13.1.3查找137
13.1.4分割138
13.2正则表达式139
13.2.1正则语法140
13.2.2正则处理函数141
13.3BeautifulSoup数据清洗144
13.3.1BeautifulSoup介绍与安装144
13.3.2BeautifulSoup的使用示例146
13.4本章小结149
第14章文档数据存储150
14.1CSV数据的写入和读取150
14.2Excel数据的写入和读取151
14.3Word数据的写入和读取154
14.4本章小结156
第15章ORM框架158
15.1SQLAlchemy介绍与安装158
15.1.1操作数据库的方法158
15.1.2SQLAlchemy框架介绍158
15.1.3SQLAlchemy的安装159
15.2连接数据库160
15.3创建数据表162
15.4添加数据164
15.5更新数据165
15.6查询数据166
15.7本章小结168
第16章MongoDB数据库操作169
16.1MongoDB介绍169
16.2MogoDB的安装及使用170
16.2.1MongoDB的安装与配置170
16.2.2MongoDB可视化工具172
16.2.3PyMongo的安装173
16.3连接MongoDB数据库173
16.4添加文档174
16.5更新文档175
16.6查询文档176
16.7本章小结178
第17章实战:爬取51Job招聘信息180
17.1项目分析180
17.2获取城市编号180
17.3获取招聘职位总页数182
17.4爬取每个职位信息184
17.5数据存储188
17.6爬虫配置文件190
17.7本章小结191
第18章实战:分布式爬虫——QQ音乐193
18.1项目分析193
18.2歌曲下载194
18.3歌手的歌曲信息198
18.4分类歌手列表201
18.5全站歌手列表203
18.6数据存储204
18.7分布式爬虫205
18.7.1分布式概念205
18.7.2并发库concurrent.futures206
18.7.3分布式策略207
18.8本章小结209
第19章实战:12306抢票爬虫211
19.1项目分析211
19.2验证码验证211
19.3用户登录与验证214
19.4查询车次219
19.5预订车票225
19.6提交订单227
19.7生成订单233
19.8本章小结236
第20章实战:玩转微博244
20.1项目分析244
20.2用户登录244
20.3用户登录(带验证码)253
20.4关键词搜索热门微博259
20.5发布微博264
20.6关注用户268
20.7点赞和转发评论271
20.8本章小结277
第21章实战:微博爬虫软件开发278
21.1GUI库及PyQt5的安装与配置278
21.1.1GUI库278
21.1.2PyQt5安装及环境搭建279
21.2项目分析281
21.3软件主界面284
21.4相关服务界面288
21.5微博采集界面292
21.6微博发布界面297
21.7微博爬虫功能308
21.8本章小结315
第22章Scrapy爬虫开发317
22.1认识与安装Scrapy317
22.1.1常见爬虫框架介绍317
22.1.2Scrapy的运行机制318
22.1.3安装Scrapy319
22.2Scrapy爬虫开发示例320
22.3Spider的编写326
22.4Items的编写329
22.5ItemPipeline的编写330
22.5.1用MongoDB实现数据入库330
22.5.2用SQLAlchemy实现数据入库332
22.6Selectors的编写333
22.7文件下载336
22.8本章小结339
第23章Scrapy扩展开发341
23.1剖析Scrapy中间件341
23.1.1SpiderMiddleware中间件342
23.1.2DownloaderMiddleware中间件344
23.2自定义中间件347
23.2.1设置代理IP服务347
23.2.2动态设置请求头350
23.2.3设置随机Cookies353
23.3实战:Scrapy+Selenium爬取豆瓣电影评论355
23.3.1网站分析355
23.3.2项目设计与实现357
23.3.3定义Selenium中间件359
23.3.4开发Spider程序360
23.4实战:Scrapy+Splash爬取B站动漫信息362
23.4.1Scrapy_Splash实现原理363
23.4.2网站分析363
23.4.3项目设计与实现365
23.4.4开发Spider程序367
23.5实战:Scrapy+Redis分布式爬取猫眼排行榜369
23.5.1Scrapy_Redis实现原理369
23.5.2安装Redis数据库371
23.5.3网站分析372
23.5.4项目设计与实现373
23.5.5开发Spider程序375
23.6分布式爬虫与增量式爬虫377
23.6.1基于管道实现增量式378
23.6.2基于中间件实现增量式381
23.7本章小结384
第24章实战:爬取链家楼盘信息386
24.1项目分析386
24.2创建项目389
24.3项目配置389
24.4定义存储字段391
24.5定义管道类392
24.6编写爬虫规则396
24.7本章小结400
第25章实战:QQ音乐全站爬取402
25.1项目分析402
25.2项目创建与配置403
25.2.1项目创建403
25.2.2项目配置403
25.3定义存储字段和管道类405
25.3.1定义存储字段405
25.3.2定义管道类405
25.4编写爬虫规则408
25.5本章小结413
前言
随着大数据和人工智能的普及,Python的地位也变得水涨船高,许多技术人员投身于Python开发,其中网络爬虫是Python最为热门的应用领域之一。在爬虫领域,Python可以说是处于霸主地位,Python能解决爬虫开发过程中所遇到的难题,开发速度快且支持异步编程,大大缩短了开发周期。此外,从事数据分析的工程师,为获取数据,很多时候也会用到网络爬虫的相关技术,因此,Python爬虫编程已成为爬虫工程师和数据分析师的必备技能。
《实战Python网络爬虫》结构
《实战Python网络爬虫》共分28章,各章内容概述如下:
第1章介绍什么是网络爬虫、爬虫的类型和原理、爬虫搜索策略和爬虫的合法性及开发流程。
第2章讲解爬虫开发的基础知识,包括HTTP协议、请求头和Cookies的作用、HTML的布局结构、JavaScript的介绍、JSON的数据格式和Ajax的原理。
第3章介绍使用Chrome开发工具分析爬取网站,重点介绍开发工具的Elements和Network标签的功能和使用方式,并通过开发工具分析QQ网站。
第4章主要介绍Fiddler抓包工具的原理和安装配置,Fiddler用户界面的各个功能及使用方法。
第5章讲述了Urllib在Python2和Python3的变化及使用,包括发送请求、使用代理IP、Cookies的读写、HTTP证书验收和数据处理。
第6章~第8章介绍Python第三方库Requests、Requests-Cache爬虫缓存和Requests-HTML,包括发送请求、使用代理IP、Cookies的读写、HTTP证书验收和文件下载与上传、复杂的请求方式、缓存的存储机制、数据清洗以及Ajax动态数据爬取等内容。
第9章介绍网页操控和数据爬取,重点讲解Selenium的安装与使用,并通过实战项目“百度自动答题”,讲解了Selenium的使用。
第10章介绍手机App数据爬取,包括Appium的原理与开发环境搭建、连接Android系统,并通过实战项目“淘宝商品采集”,介绍了App数据的爬取技巧。
第11章介绍Splash、Mitmproxy与Aiohttp的安装和使用,包括Splash动态数据抓取、Mitmproxy抓包和Aiohttp高并发抓取。
第12章介绍验证码的种类和识别方法,包括OCR的安装和使用、验证码图片处理和使用第三方平台识别验证码。
第13章讲述数据清洗的三种方法,包括字符串操作(截取、查找、分割和替换)、正则表达式的使用和第三方库BeautifulSoup的安装以及使用。
第14章讲述如何将数据存储到文件,包括CSV、Excel和Word文件的读取和写入方法。
第15章介绍ORM框架SQLAlchemy的安装及使用,实现关系型数据库持久化存储数据。
第16章讲述非关系型数据库MongoDB的操作,包括MongoDB的安装、原理和Python实现MongoDB的读写。
第17章至第21章介绍了5个实战项目,分别是:爬取51Job招聘信息、分布式爬虫——QQ音乐、12306抢票爬虫、微博爬取和微博爬虫软件的开发。
第22章至第25章介绍了Scrapy爬虫框架,包括Scrapy的运行机制、项目创建、各个组件的编写(Setting、Items、ItemPipelines和Spider)和文件下载及Scrapy中间件,并通过实战项目“Scrapy+Selenium爬取豆瓣电影评论”、“Scrapy+Splash爬取B站动漫信息”和“Scrapy+Redis分布式爬取猫眼排行榜”、“爬取链家楼盘信息”和“QQ音乐全站爬取”,深入讲解了Scrapy的应用和分布式爬虫的编写技巧。
第26章介绍爬虫的上线部署,包括非框架式爬虫和框架式爬虫的部署技巧。
第27章介绍常见的反爬虫技术,并给出了可行的反爬虫解决方案。
第28章介绍爬虫框架的编写,学习如何自己动手编写一款爬虫框架,以满足特定业务场景的需求。
《实战Python网络爬虫》特色
循序渐进,涉及面广:《实战Python网络爬虫》站在初学者的角度,循序渐进地介绍了使用Python开发网络爬虫的各种知识,内容由浅入深,几乎涵盖了目前网络爬虫开发的各种热门工具和前瞻性技术。
实战项目丰富,扩展性强:《实战Python网络爬虫》采用大量的实战项目进行讲解,力求通过实际应用使读者更容易地掌握爬虫开发技术,以应对业务需求。《实战Python网络爬虫》项目经过编者精心设计和挑选,根据实际开发经验总结而来,涵盖了在实际开发中所遇到的各种问题。对于精选项目,尽可能做到步骤详尽、结构清晰、分析深入浅出,而且案例的扩展性强,读者可根据实际需求扩展开发。
从理论到实践,注重培养爬虫开发思维:在讲解过程中,不仅介绍理论知识,注重培养读者的爬虫开发思维,而且安排了综合应用实例或小型应用程序,使读者能顺利地将理论应用到实践中。
特色干货,倾情分享:《实战Python网络爬虫》大部分内容都来自作者多年来的编程实践,操作性很强。值得关注的是,《实战Python网络爬虫》还介绍了爬虫软件和爬虫框架的开发,供学有余力的读者扩展知识结构,提升开发技能。
源代码下载
《实战Python网络爬虫》所有程序代码均在Python3.6下调试通过,源代码Github下载地址:
https://github.com/xyjw/python-Reptile
你也可以扫描下面的二维码下载。
如果你在下载过程中遇到问题,可发送邮件至554301449@qq.com获得帮助,邮件标题为“实战Python网络爬虫下载资源”。
技术服务
读者在学习或者工作的过程中,如果遇到实际问题,可以加入QQ群93314951与笔者联系,笔者会在第一时间给予回复。
读者对象
《实战Python网络爬虫》主要适合以下读者阅读:
?Python网络爬虫初学者及在校学生。
?Python初级爬虫工程师。
?从事数据抓取和分析的技术人员。
?学习Python程序设计的开发人员。
虽然笔者力求《实战Python网络爬虫》更臻完美,但由于水平所限,难免会出现错误,特别是实例中爬取的网站可能随时更新,导致源码在运行过程中出现问题,欢迎广大读者和高手专家给予指正,笔者将十分感谢。
黄永祥
2019年1月









