本书适合网络爬虫方向的初学者,系统全面地讲解了如何使用Python快速编写网络爬虫程序。本书在讲解时,结合理论加实践,循序渐进地引领读者疏通原理、动手实践、运用框架。通过本书可以让读者快速进入爬虫领域,具备运用爬虫的能力,满足获取定制数据的需求。
全书共分为13个章节,内容主要包括初识网络爬虫、爬虫的实现原理和技术、网页请求的原理、抓取和解析网页数据的相关技术、并发下载,抓取动态网页、图像识别与文字处理、存储爬虫数据,以及爬虫框架Scrapy的使用,最后介绍了通过Scrapy-Redis如何实现分布式爬虫。
本书既可作为高等院校专科计算机相关专业的程序设计课程教材,也可作为Python网络爬虫的培训教材,是一本适合广大编程开发者的爬虫入门级教材。
特色一:零基础、入门级讲解
为了帮助读者快速入门,本书以初学者的角度出发,铺垫讲解了很多关于网络爬虫的基础知识,让读者站在原理的角度上理解爬虫的机制。
特色二:循序渐进,通俗易懂
在课程知识和内容讲解上,本书所涉及到的知识点都是对应实际应用需求,课程的编排顺序符合大众的认知规律,在知识讲解时采用易于理解的图示和举例的方式,将抽象的概念具体化,并利用示例进一步验证和测试,以总结出实用的经验。
特色三:案例丰富、实战性强
全书共13章,除了第1章介绍爬虫基础知识外,其余每章配有一个真实的爬虫案例,具有极高的参考价值。读者只要亲自实践本书中的案例,轻松掌握爬虫,那都不是事儿~
特色四:知识点全面,技巧性强
在学习爬虫的过程中,本书都会在解决爬虫问题的基础上,提供多种技术参考和解决方案,并且对这些方案进行对比,以供读者在实际运用中更好地选择,增强读者在工作中的编程能力。
特色五:教材、资源、服务三合一,高效学习
为了便于老师备课,本教材配备了精美的PPT、教学视频和源代码等资源。本书还有配套题库可以根据需求自由组卷,方便老师考察学生的学习情况。
第1章 初识爬虫 1.1 爬虫产生背景 1.2 什么是爬虫 1.3 爬虫的用途 1.4 爬虫的分类 1.4.1 通用爬虫和聚焦爬虫 1.4.2 累积式和增量式爬虫 1.4.3 表层爬虫和深层爬虫 1.5 本章小结 1.6 本章习题 第2章 爬虫的实现原理和技术 2.1 爬虫实现原理简介 2.1.1 通用爬虫工作原理 2.1.2 聚焦爬虫工作原理 2.2 爬虫抓取网页的详细流程 2.3 通用爬虫中网页的分类 2.4 通用爬虫相关网站文件 2.4.1 robots.txt文件 2.4.2 Sitemap.xml文件 2.5 反爬虫应对策略 2.6 为什么选择Python做爬虫 2.7 案例—使用八爪鱼工具爬取第一个网页 2.8 本章小结 2.9 本章习题 第3章 网页请求原理 3.1 浏览网页过程 3.1.1 统一资源定位符URL 3.1.2 计算机域名系统DNS 3.2 HTTP网络请求原理 3.2.1 分析浏览器显示完整网页的过程 3.2.2 客户端HTTP请求格式 3.2.3 服务端HTTP响应格式 3.3 HTTP抓包工具Fiddler 3.3.1 Fiddler工作原理 3.3.2 下载安装 3.3.3 Fiddler界面详解 3.3.4 Fiddler抓取HTTPS设置 3.3.5 使用Fiddler捕获Chrome的会话 3.4 本章小结 3.5 本章习题 第4章 抓取网页数据 4.1 什么是urllib库 4.2 快速使用urllib爬取网页 4.2.1 快速爬取一个网页 4.2.2 分析urlopen方法 4.2.3 使用HTTPResponse对象 4.2.4 构造Request对象 4.3 使用urllib实现数据传输 4.3.1 URL编码转换 4.3.2 处理GET请求 4.3.3 处理POST请求 4.4 添加特定Headers—请求伪装 4.5 代理服务器 4.5.1简单的自定义opener 4.5.2 设置代理服务器 4.6 超时设置 4.7 常见的网络异常 4.7.1 URLError异常和捕获 4.7.2 HttpError异常和捕获 4.8 更人性化的requests库 4.8.1 什么是requests库 4.8.2 requests库初体验 4.8.3 发送请求 4.8.4 返回响应 4.9 案例—使用urllib库爬取百度贴吧 4.10 本章小结 4.11 本章习题 第5章 数据解析 5.1 了解网页数据和结构 5.1.1 网页数据格式 5.1.2 查看网页结构 5.2 数据解析技术 5.3 正则表达式 5.4 XPath与lxml解析库 5.4.1 什么是XPath 5.4.2 XPath语法 5.4.3 XPath开发工具 5.4.4 什么是lxml库 5.4.5 lxml库的基本使用 5.5 Beautiful Soup 5.5.1 什么是Beautiful Soup 5.5.2 构建BeautifulSoup对象 5.5.3 通过操作方法进行解读搜索 5.5.4 通过CSS选择器进行搜索 5.6 JSONPath与json模块 5.6.1 什么是JSON 5.6.2 JSON与XML语言比较 5.6.3 json模块介绍 5.6.4 json模块基本使用 5.6.5 JSONPath介绍 5.6.6 JSONPath语法对比 5.6.7 案例—获取拉勾网城市列表 5.7 案例—解析腾讯社招网站的职位信息 5.7.1 明确爬虫抓取目标 5.7.2 分析要解析的数据 5.7.3 使用urllib库抓取社招网数据 5.7.4 使用正则、lxml、bs4解析职位数据 5.7.5 将数据保存到文件中 5.8 本章小结 5.9 本章习题 第6章 并发下载 6.1 多线程爬虫流程分析 6.2 使用queue模块实现多线程爬虫 6.2.1 queue(队列)模块简介 6.2.2 Queue类简介 6.3 协程实现并发爬取 6.3.1 协程爬虫的流程分析 6.3.2 第三方库gevent 6.4 案例—三种技术采集和解析数据对比 6.4.1 单线程实现 6.4.2 多线程实现 6.4.3 协程实现 6.4.4 性能分析 6.5 本章小结 6.6 本章习题 第7章 抓取动态内容 7.1 动态网页介绍 7.2 selenium和PhantomJS概述 7.3 selenium和PhantomJS安装配置 7.4 selenium和PhantomJS基本使用 7.4.1 入门操作 7.4.2 定位UI元素 7.4.3 鼠标动作链 7.4.4 填充表单 7.4.5 弹窗处理 7.4.6 页面切换 7.4.7 页面前进和后退 7.4.8 获取页面Cookies 7.4.9 页面等待 7.5 案例—模拟豆瓣网站登陆 7.6 本章小结 7.7 本章习题 第8章 图像识别与文字处理 8.1 OCR技术简介 8.2 Tesseract引擎的下载和安装 8.3 pytesseract和PIL库概述 8.3.1 pytesseract库简介 8.3.2 PIL库简介 8.4 处理规范格式的文字 8.4.1 读取图像中格式规范的文字 8.4.2 对图片进行阈值过滤和降噪处理 8.4.3 识别图像的中文字符 8.5 处理验证码 8.5.1 验证码分类 8.5.2简单识别图形验证码 8.6 案例—识别图形验证码 8.7 本章小结 8.8 本章习题 第9章 存储爬虫数据 9.1 数据存储简介 9.2 MongoDB数据库简介 9.2.1 什么是MongoDB 9.2.2 Windows平台安装MongoDB数据库 9.2.3 比较MongoDB和MySQL的术语 9.3 使用PyMongo库存储到数据库 9.3.1 什么是PyMongo 9.3.2 PyMongo的基本操作 9.4 案例—存储网站的电影信息 9.4.1 分析待爬取的网页 9.4.2 通过urllib爬取全部页面 9.4.3 通过bs4选取数据 9.4.4 通过MongoDB存储电影信息 9.5 本章小结 9.6 本章习题 第10章 初识爬虫框架Scrapy 10.1 常见爬虫框架介绍 10.2 Scrapy框架的架构 10.3 Scrapy框架的运作流程 10.4 安装Scrapy框架 10.4.1 Windows 7系统下的安装 10.4.2 Linux(Ubuntu)系统下的安装 10.4.3 Mac OS系统下的安装 10.5 Scrapy框架的基本操作 10.5.1 新建一个Scrapy项目 10.5.2 明确抓取目标 10.5.3 制作Spiders爬取网页 10.5.4 永久性存储数据 10.5.5 Scrapy命令小结 10.6 本章小结 10.7 本章习题 第11章Scrapy终端与核心组件 11.1 Scrapy shell—测试XPath表达式 11.1.1 启用Scrapy shell 11.1.2 使用Scrapy shell 11.1.3 Scrapy shell使用示例 11.2 Spiders—抓取和提取结构化数据 11.3 Item Pipeline—后期处理数据 11.3.1 自定义Item Pipeline 11.3.2 完善之前的案例—item写入JSON文件 11.4 Downloader Middlewares—防止反爬虫 11.5 Settings—定制Scrapy组件 11.6 实战—斗鱼App爬虫 11.6.1 使用Fiddler抓取手机App的数据 11.6.2 分析JSON文件的内容 11.6.3 使用Scrapy抓取数据 11.7 本章小结 11.8 本章习题 第12章 自动抓取网页的爬虫CrawlSpider 12.1 初识爬虫类CrawlSpider 12.2 CrawlSpider类的工作原理 12.3 通过Rule类决定爬取规则 12.4 通过LinkExtractor类提取链接 12.5 案例—使用CrawlSpider爬取腾讯社招网站 12.6 本章小结 12.7 本章习题 第13章 Scrapy-Redis分布式爬虫 13.1 Scrapy-Redis简介 13.2 Scrapy-Redis的完整架构 13.3 Scrapy-Redis的运作流程 13.4 Scrapy-Redis的主要组件 13.5 搭建Scrapy-Redis开发环境 13.5.1 安装Scrapy-Redis 13.5.2 安装和启动Redis数据库 13.5.3 修改配置文件 redis.conf 13.6 分布式的部署 13.6.1 分布式策略 13.6.2 测试Slave端远程连接Master端 13.7 Scrapy-Redis的基本使用 13.7.1 创建Scrapy项目 13.7.2 明确抓取目标 13.7.3 制作Spider爬取网页 13.7.4 执行分布式爬虫 13.7.5 使用多个管道存储 13.7.6 处理Redis数据库里的数据 13.8 案例—使用分布式爬虫抓取百度百科网站 13.8.1 创建Scrapy项目 13.8.2 分析爬虫的目标 13.8.3 制作Spider爬取网页 13.8.4 执行爬虫 13.9 本章小结 13.10 本章习题