PAGE6
PAGE6
PAGE3
PAGE3
课题
第9章分布式爬虫
课时
6课时(270min)
教学目标
知识目标:
(1)理解分布式爬虫原理
(2)掌握实现Scrapy-Redis分布式爬虫的方法
(3)掌握使用Scrapyd部署分布式爬虫的方法
能力目标:
(1)能使用Scrapy-Redis实现分布式爬虫
(2)能使用Scrapyd部署分布式爬虫
素质目标:
在解决分布式爬虫过程中遇到的各种问题时,培养问题解决能力和创新思维
教学重难点
教学重点:分布式爬虫原理,实现Scrapy-Redis分布式爬虫的方法,使用Scrapyd部署分布式爬虫的方法
教学难点:使用Scrapy-Redis实现分布式爬虫,使用Scrapyd部署分布式爬虫
教学方法
案例分析法、问答法、讨论法、讲授法
教学用具
电脑、投影仪、多媒体课件、教材
教学过程
主要教学内容及步骤
考勤
【教师】使用APP进行签到
【学生】班干部报请假人员及原因
问题导入
【教师】提出以下问题:
分布式爬虫的原理是什么?
【学生】聆听、思考、举手回答
传授新知
【教师】通过学生的回答引入要讲的知识,介绍分布式爬虫原理,实现Scrapy-Redis分布式爬虫的方法,以及使用Scrapyd部署分布式爬虫的方法等知识
9.1分布式爬虫原理
?【教师】利用多媒体展示“分布式爬虫架构”图片(详见教材),并进行讲解
分布式爬虫是一个整体的框架,它通过多台计算机同时运行爬虫程序协同爬取数据,而协同爬取数据的前提是共享爬取队列,其架构如图所示。
从图可以看出,每个爬虫程序从爬取队列中获取待爬取的Request,并将未处理的Request存入爬取队列中统一去重。爬虫程序有各自的Downloader,分别完成下载任务。
9.2Scrapy-Redis分布式爬虫
?【教师】播放“Scrapy-Redis分布式爬虫”视频(详见教材),并提出以下问题:
如何实现Scrapy-Redis分布式爬虫?
?【学生】观看、思考、举手回答
?【教师】总结学生回答
Python分布式爬虫通常使用Scrapy框架加上Redis数据库实现,通过scrapy-redis模块实现统一任务调度,Redis数据库则存储共享爬取队列。本章以第8章中使用Scrapy框架编写的BaiduSpider项目为例,介绍在两台Windows计算机中实现Scrapy-Redis分布式爬虫的方法。
9.2.1安装和配置Redis数据库
Redis是一个开源(BSD许可)的,支持网络,可基于内存亦可持久化的日志型Key-Value数据库。它支持多种类型的数据结构,如列表(lists)、集合(sets)和有序集合(sortedsets)等,处理速度快。
1.下载Redis
?【教师】利用多媒体展示“下载页面”图片(详见教材),并进行讲解
1在打开的页面中单击“Assets”文字,如图所示。
1
?【教师】利用多媒体展示“下载列表”图片(详见教材),并进行讲解
2打开下载列表,选择“Redis-x64-3.2.100.msi”选项,下载安装文件,如图所示。
2
2.安装Redis
?【教师】利用多媒体展示“欢迎安装”图片(详见教材),并进行讲解
1双击下载好的Redis-x64-3.2.100.msi文件,在打开的对话框中单击“Next”按钮,如图所示。
1
?【教师】利用多媒体展示“同意安装许可”图片(详见教材),并进行讲解
2显示“End-UserLicenseAgreement”界面,勾选“IacceptthetermsintheLicenseAgreement”复选框,单击“Next”按钮,如图所示。
2
……(详见教材)
3.验证Redis
?【教师】利用多媒体展示“连接Redis数据库”图片(详见教材),并进行讲解
1打开命令提示符窗口,切换至Redis安装目录(如C:\ProgramFiles\Redis),输入“redis-cli”命令,按回车键,如果显示正确路径(包括端口号),则表示已经启动服务并连接了Redis数据库,如图所示。
1
?【教师】利用多媒体展示“读写Redis”图片(详见教材),并进行讲解
2输入“setmykeyhello”命令,按回车键,如果返回显示“OK”,表示成功保存一个键值;输入“getmykey”命令,按回车键,可读取键值(此处显示“hello”),如图所示。
2
9.2.2安装redis-py库
Python提供redis-py库用于连接Redis数据库。redis-py库不是Python内置的标准库,使用之前需要安装,安装方法与requests库的安装类似(请参考2.3.2节),此处不再赘述