编辑推荐
《解析Python网络爬虫:核心技术、Scrapy框架、分布式爬虫》结合案例讲解各知识点,帮助读者掌握Python网络爬虫的核心技术。内容简介
网络爬虫是一种按照一定的规则,自动请求万维网网站并提取网络数据的程序或脚本,它可以代替人力进行信息采集,能够自动采集并高效地利用互联网中的数据,在市场的应用需求中占据着重要的位置。
《解析Python网络爬虫:核心技术、Scrapy框架、分布式爬虫》以Windows为主要平台,系统全面地讲解了Python网络爬虫的相关知识。主要内容包括:初识爬虫、爬虫的实现原理和技术、网页请求原理、爬取网页数据、数据解析、并发下载、图像识别与文字处理、存储爬虫数据、初识爬虫框架Scrapy、Scrapy终端与核心组件、自动爬取网页的爬虫CrawSpider、Scrapy-Redis分布式爬虫。
《解析Python网络爬虫:核心技术、Scrapy框架、分布式爬虫》适合作为高等院校计算机相关专业程序设计课程教材,也可作为Python网络爬虫的培训教材,以及广大编程开发者的爬虫入门级教材。作者简介
黑马程序员:江苏传智播客教育科技股份有限公司(简称传智播客)是一家专门致力于高素质软件开发人才培养的高科技公司。传智播客致力于为企业优选一流的人才的培训理念,经过多年的教学探索及战略布局,已向着综合型职业教育集团发展。目前,传智播客旗下已涵盖传智播客IT教育培训、黑马程序员训练营及博学谷三大子品牌。“黑马程序员”是传智播客旗下高端IT教育品牌。目录
第1章初识爬虫1
1.1爬虫产生背景1
1.2爬虫的概念2
1.3爬虫的用途2
1.4爬虫的分类3
1.4.1通用爬虫和聚焦爬虫3
1.4.2累积式爬虫和增量式爬虫4
1.4.3表层爬虫和深层爬虫4
小结5
习题5
第2章爬虫的实现原理和技术6
2.1爬虫实现原理6
2.1.1通用爬虫工作原理6
2.1.2聚焦爬虫工作原理8
2.2爬虫爬取网页的详细流程9
2.3通用爬虫中网页的分类10
2.4通用爬虫相关网站文件10
2.4.1robots.txt文件11
2.4.2Sitemap.xml文件12
2.5防爬虫应对策略12
2.6选择Python做爬虫的原因14
2.7案例——使用八爪鱼工具爬取
第一个网页14
小结21
习题21
第3章网页请求原理23
3.1浏览网页过程23
3.1.1统一资源定位符24
3.1.2计算机域名系统25
3.2HTTP网络请求原理25
3.2.1分析浏览器显示完整网页
的过程26
3.2.2客户端HTTP请求格式26
3.2.3服务端HTTP响应格式30
3.3HTTP抓包工具Fiddler32
3.3.1Fiddler工作原理32
3.3.2Fiddler下载安装32
3.3.3Fiddler界面详解33
3.3.4Fiddler爬取HTTPS设置35
3.3.5使用Fiddler捕获Chrome
的会话37
小结40
习题40
第4章爬取网页数据42
4.1urllib库概述42
4.2快速使用urllib爬取网页43
4.2.1快速爬取一个网页43
4.2.2分析urlopen()方法44
4.2.3使用HTTPResponse对象45
4.2.4构造Request对象46
4.3使用urllib实现数据传输47
4.3.1URL编码转换47
4.3.2处理GET请求48
4.3.3处理POST请求49
4.4添加特定Headers——请求伪装51
4.5代理服务器52
4.5.1简单的自定义opener52
4.5.2设置代理服务器53
4.6超时设置54
4.7常见的网络异常55
4.7.1URLError异常和捕获55
4.7.2HttpError异常和捕获55
4.8更人性化的requests库56
4.8.1requests库概述56
4.8.2requests库初体验56
4.8.3发送请求58
4.8.4返回响应58
4.9案例——使用urllib库爬取百度
贴吧59
小结61
习题61
第5章数据解析63
5.1网页数据和结构63
5.1.1网页数据格式63
5.1.2网页结构64
5.2数据解析技术64
5.3正则表达式65
5.4XPath与lxml解析库66
5.4.1XPath概述66
5.4.2XPath语法67
5.4.3XPath开发工具70
5.4.4lxml库概述72
5.4.5lxml库的基本使用75
5.5BeautifulSoup77
5.5.1BeautifulSoup概述77
5.5.2构建BeautifulSoup对象78
5.5.3通过操作方法进行解读
搜索80
5.5.4通过CSS选择器进行搜索83
5.6JSONPath与json模块85
5.6.1JSON概述85
5.6.2JSON与XML比较86
5.6.3json模块介绍87
5.6.4json模块基本应用88
5.6.5JSONPath简介90
5.6.6JSONPath语法对比90
5.6.7案例——获取拉勾网城市
列表92
5.7案例——解析腾讯社会招聘网站
的职位信息94
5.7.1明确爬虫爬取目标95
5.7.2分析要解析的数据95
5.7.3使用urllib库爬取社招网
数据96
5.7.4使用正则、lxml、bs4解析
职位数据98
5.7.5将数据保存到文件中103
小结104
习题104
第6章并发下载106
6.1多线程爬虫流程分析106
6.2使用queue模块实现多线程
爬虫107
6.2.1queue(队列)模块简介107
6.2.2Queue类概述109
6.3协程实现并发爬取110
6.3.1协程爬虫的流程分析111
6.3.2第三方库gevent111
6.4案例——三种技术采集和解析
数据对比112
6.4.1单线程实现112
6.4.2多线程实现114
6.4.3协程实现119
6.4.4性能分析122
小结123
习题123
第7章爬取动态内容124
7.1动态网页介绍124
7.2selenium和PhantomJS概述125
7.3selenium和PhantomJS安装
配置126
7.4selenium和PhantomJS的基本
应用128
7.4.1入门操作128
7.4.2定位UI元素133
7.4.3鼠标动作链135
7.4.4填充表单136
7.4.5弹窗处理137
7.4.6页面切换138
7.4.7页面前进和后退138
7.4.8获取页面Cookies138
7.4.9页面等待138
7.5案例——模拟豆瓣网站登录140
小结142
习题142
第8章图像识别与文字处理145
8.1OCR技术概述145
8.2Tesseract引擎的下载和安装147
8.3pytesseract和PIL库概述148
8.3.1pytesseract库概述149
8.3.2PIL库概述149
8.4处理规范格式的文字150
8.4.1读取图像中格式规范的
文字151
8.4.2对图片进行阈值过滤和
降噪处理151
8.4.3识别图像的中文字符153
8.5处理验证码154
8.5.1验证码分类154
8.5.2简单识别图形验证码155
8.6案例——识别图形验证码156
小结157
习题157
第9章存储爬虫数据159
9.1数据存储概述159
9.2MongoDB数据库概述160
9.2.1MongoDB的概念160
9.2.2Windows平台安装MongoDB数据库160
9.2.3比较MongoDB和MySQL的术语163
9.3使用PyMongo库存储到
数据库165
9.3.1PyMongo的概念165
9.3.2PyMongo的基本操作165
9.4案例——存储网站的电影信息169
9.4.1分析待爬取的网页169
9.4.2通过urllib爬取全部页面169
9.4.3通过bs4选取数据171
9.4.4通过MongoDB存储
电影信息172
小结173
习题173
第10章初识爬虫框架Scrapy175
10.1常见爬虫框架介绍175
10.2Scrapy框架的架构179
10.3Scrapy框架的运作流程180
10.4安装Scrapy框架181
10.4.1Windows7系统下的
安装181
10.4.2Linux(Ubuntu)系统下的
安装184
10.4.3MacOS系统下的安装185
10.5Scrapy框架的基本操作186
10.5.1新建一个Scrapy项目186
10.5.2明确爬取目标187
10.5.3制作Spiders爬取网页188
10.5.4永久性存储数据193
10.5.5Scrapy常用命令193
小结194
习题194
第11章Scrapy终端与核心组件196
11.1Scrapyshell——测试XPath
表达式196
11.1.1启用Scrapyshell196
11.1.2使用Scrapyshell197
11.1.3Scrapyshell使用示例198
11.2Spiders——爬取和提取结构化
数据200
11.3ItemPipeline——后期处理
数据201
11.3.1自定义ItemPipeline201
11.3.2完善之前的案例——
item写入JSON文件202
11.4DownloaderMiddlewares——
防止反爬虫203
11.5Settings——定制Scrapy
组件206
11.6案例——斗鱼App爬虫208
11.6.1使用Fiddler爬取手机
App的数据208
11.6.2分析JSON文件的内容210
11.6.3使用Scrapy爬取数据211
小结214
习题214
第12章自动爬取网页的爬虫CrawlSpider216
12.1初识爬虫类CrawlSpider216
12.2CrawlSpider类的工作原理219
12.3通过Rule类决定爬取规则221
12.4通过LinkExtractor类提取
链接222
12.5案例——使用CrawlSpider爬取
腾讯社会招聘网站223
小结228
习题228
第13章Scrapy-Redis分布式
爬虫230
13.1Scrapy-Redis概述230
13.2Scrapy-Redis的完整架构231
13.3Scrapy-Redis的运作流程231
13.4Scrapy-Redis的主要组件232
13.5搭建Scrapy-Redis开发环境233
13.5.1安装Scrapy-Redis233
13.5.2安装和启动Redis
数据库234
13.5.3修改配置文件redis.conf239
13.6分布式的部署242
13.6.1分布式策略242
13.6.2测试Slave端远程连接
Master端243
13.7Scrapy-Redis的基本使用245
13.7.1创建Scrapy项目245
13.7.2明确爬取目标246
13.7.3制作Spider爬取网页247
13.7.4执行分布式爬虫249
13.7.5使用多个管道存储250
13.7.6处理Redis数据库中的
数据252
13.8案例——使用分布式爬虫爬取
百度百科网站253
13.8.1创建Scrapy项目254
13.8.2分析爬虫的目标255
13.8.3制作Spider爬取网页257
13.8.4执行爬虫260
小结262
习题262前言/序言
网络爬虫是一种按照一定的规则,自动请求万维网网站并提取网络数据的程序或脚本,它可以代替人力进行信息采集,能够自动采集并高效地利用互联网中的数据,市场的应用需求越来越大。
Python语言的一个重要领域就是爬虫,通过Python编写爬虫简单易学,无须掌握太多底层的知识就可以快速上手,并且能快速地看到成果。对于要往爬虫方向发展的读者而言,学习Python爬虫是一项不错的选择。
为什么学习《解析Python网络爬虫:核心技术、Scrapy框架、分布式爬虫》
随着大数据时代的到来,万维网成为了大量信息的载体,如何有效地提取并利用这些信息成为一个巨大的挑战。基于这种需求,爬虫技术应运而生,并迅速发展成为一门成熟的技术。《解析Python网络爬虫:核心技术、Scrapy框架、分布式爬虫》站在初学者的角度,循序渐进地讲解了学习网络爬虫必备的基础知识,以及一些爬虫框架的基本使用方法,以帮助读者掌握爬虫的相关技能,使其能够独立编写自己的Python网络爬虫项目,从而胜任Python网络爬虫工程师相关岗位的工作。
《解析Python网络爬虫:核心技术、Scrapy框架、分布式爬虫》在讲解时,采用需求引入的方式介绍网络爬虫的相关技术,同时针对多种技术进行对比讲解,让读者深刻地理解这些技术的不同之处,以选择适合自己的开发技巧,提高读者的开发兴趣和开发能力。
作为开发人员,要想真正掌握一门技术,离不开多动手练习,所以《解析Python网络爬虫:核心技术、Scrapy框架、分布式爬虫》在讲解各知识点的同时,不断地增加案例,大限度地帮助读者掌握Python网络爬虫的核心技术。
如何使用《解析Python网络爬虫:核心技术、Scrapy框架、分布式爬虫》
《解析Python网络爬虫:核心技术、Scrapy框架、分布式爬虫》基于Python3,系统全面地讲解了Python网络爬虫的基础知识,《解析Python网络爬虫:核心技术、Scrapy框架、分布式爬虫》共分13章,具体介绍如下:
第1、2章主要带领大家认识网络爬虫,并且掌握爬虫的实现原理。希望读者能明白爬虫具体是怎样爬取网页的,并对爬取过程中产生的一些问题有所了解,后期会对这些问题提供一些合理的解决方案。
第3~5章从网页请求的原理入手,详细讲解了爬取和解析网页数据的相关技术,包括urllib库的使用、正则表达式、XPath、BeautifulSoup和JSONPath,以及封装了这些技术的Python模块或库。希望读者在解析网页数据时,可根据具体情况灵活选择合理的技术进行运用。
第6~8章主要讲解并发下载、动态网页爬取、图像识别和文字处理等内容。希望读者能够体会到在爬虫中运用多线程和协程的优势,掌握抓取动态网页的一些技巧,并且会处理一些字符格式规范的图像和简单的验证码。
第9章主要介绍存储爬虫数据,包括数据存储简介、MongoDB数据库简介、使用PyMongo库存储到数据库等,并结合豆瓣电影的案例,讲解了如何一步步从该网站中爬取、解析、存储电影信息。通过本章的学习,读者将能够简单地操作MongoDB数据库,并在以后的工作中灵活运用。
第10~12章主要介绍爬虫框架Scrapy以及自动爬取网页的爬虫CrawlSpider的相关知识,通过对这几章知识的学习,读者可以对Scrapy框架有基本认识,为后面Scrapy框架的深入学习做好铺垫,同时,也可以掌握CrawlSpider类的使用技巧,在工作中具备独当一面的能力。
第13章围绕Scrapy-Redis分布式爬虫进行讲解,包括Scrapy-Redis的完整架构、运作流程、主要组件、基本使用,以及如何搭建Scrapy-Redis开发环境等,并结合百度百科的案例运用这些知识点。通过本章的学习,读者可在实际应用中利用分布式爬虫更高效地提取有用的数据。
在学习过程中,读者一定要亲自实践《解析Python网络爬虫:核心技术、Scrapy框架、分布式爬虫》中的案例代码。另外,如果读者在理解知识点的过程中遇到困难,建议不要纠结于某个地方,可以先往后学习。通常来讲,通过逐渐深入的学习,前面不懂和疑惑的知识点也就能够理解了。在学习编程的过程中,一定要多动手实践,如果在实践过程中遇到问题,建议多思考,理清思路,认真分析问题发生的原因,并在问题解决后总结出经验。
致谢
《解析Python网络爬虫:核心技术、Scrapy框架、分布式爬虫》的编写和整理工作由传智播客教育科技股份有限公司完成,主要参与人员有
吕春林、高美云、刘传梅、王晓娟、毛兆军等。全体人员在近一年的编写过程中付出了很多辛勤的汗水,在此表示衷心的感谢。
意见反馈
尽管我们付出了大的努力,但书中仍难免会有不妥之处,欢迎各界专家和读者朋友来信提出宝贵意见,我们将不胜感激。在阅读《解析Python网络爬虫:核心技术、Scrapy框架、分布式爬虫》时,发现任何问题或有不认同之处可以通过电子邮件与我们取得联系。
请发送电子邮件至:itcast_book@vip.sina.com。
黑马程序员
2018年3月于北京