基本信息
文件名称:《Python网络爬虫技术案例教程》教案 第5章 反爬虫策略.docx
文件大小:9.34 MB
总页数:4 页
更新时间:2025-05-26
总字数:约3.19千字
文档摘要

PAGE2

PAGE2

PAGE3

PAGE3

课题

第5章反爬虫策略

课时

4课时(180min)

教学目标

知识目标:

(1)理解反爬虫的原因

(2)了解反爬虫策略

(3)掌握应对反爬虫的措施

能力目标:

能使用代理IP和降低请求频率等措施应对反爬虫

素质目标:

培养持续学习和优化的意识,以适应不断变化的网络环境

教学重难点

教学重点:反爬虫的策略,应对反爬虫的措施

教学难点:使用代理IP和降低请求频率等措施应对反爬虫

教学方法

案例分析法、问答法、讨论法、讲授法

教学用具

电脑、投影仪、多媒体课件、教材

教学过程

主要教学内容及步骤

考勤

【教师】使用APP进行签到

【学生】班干部报请假人员及原因

问题导入

【教师】提出以下问题:

(1)为什么要进行反爬虫?

(2)反爬虫可以采取哪些措施?

【学生】聆听、思考、举手回答

传授新知

【教师】通过学生的回答引入要讲的知识,介绍反爬虫策略和应对反爬虫的措施等知识

5.1反爬虫策略

编写爬虫程序的目的是自动获取网站的一些数据,而反爬虫则是利用技术手段防止爬虫程序爬取数据。反爬虫的原因如下。

(1)不遵守规范的爬虫会影响网站的正常使用,很多初级爬虫程序非常简单,不考虑网站服务器的压力,有时甚至会导致网站宕机。

(2)保护数据,不希望重要或涉及用户利益的数据被别人爬取。

(3)避免数据被同行爬取,丧失竞争力,如电商行业。

常见的反爬虫策略有以下几种。

1.通过Headers反爬虫

通过识别用户请求的Headers来反爬虫是网站服务器最常用的反爬虫策略。很多网站都会对HTTP请求头部的User-Agent进行检测(判断是否为浏览器访问);有一部分网站会对Referer进行检测(一些资源网站的防盗链接);还有一部分网站会对Cookie进行检测(需要登录才能获取更多数据)。

2.基于用户行为反爬虫

通过检测用户行为来判断请求是否来自爬虫程序也是一种常用的反爬虫策略。例如,同一IP地址短时间内多次访问,或者同一账户短时间内多次进行相同操作,都有可能使网站服务器采取反爬虫措施。

3.采用动态加载数据反爬虫

有一些网站的网页是通过JavaScript动态生成的,无法直接爬取当前网页获取所需数据,这样对爬虫程序的直接爬取造成了一些困难。

?【教师】利用多媒体展示“常见的爬虫和反爬虫对抗过程”图片(详见教材),并进行讲解

常见的爬虫和反爬虫对抗过程如图所示。

5.2应对反爬虫的措施

针对上节提出的反爬虫策略,可以采取不同的应对措施。常见的应对反爬虫的措施有设置Headers(见2.3节)、使用代理IP、降低请求频率、逆向分析请求页面(见4.2节)和使用Selenium模拟浏览器(见4.3节)等。下面详细介绍使用代理IP和降低请求频率两种措施的实现方法。

5.2.1使用代理IP

?【教师】播放“使用代理IP”视频(详见教材),并提出以下问题:

如何使用代理IP?

?【学生】观看、思考、举手回答

?【教师】总结学生回答

针对网站检测IP访问的反爬虫策略,可以使用代理IP。代理IP是代理用户取得网络信息的IP地址,它可以帮助爬虫程序掩藏真实身份,突破IP访问的限制,隐藏爬虫程序的真实IP,从而避免被网站的反爬虫程序禁止。

requests库实现使用代理IP非常方便,只需要构造一个代理IP的字典,然后在发送HTTP请求时,使用proxies参数添加代理IP的字典即可。如果需要使用多个代理IP,可将所有的代理IP字典构成列表,然后从列表中随机选择代理IP。

【例5-1】爬取Python中文开发者社区首页,使用代理IP发送HTTP请求,验证代理IP的可用性,输出响应状态码和验证结果。

(详见教材)

5.2.2降低请求频率

?【教师】播放“降低请求频率”视频(详见教材),并提出以下问题:

如何降低请求频率?

?【学生】观看、思考、举手回答

?【教师】总结学生回答

爬虫程序运行得太频繁,一方面对网站极不友好,另一方面十分容易触发网站的反爬虫。因此,当运行爬虫程序时,可以设置两次请求之间的时间间隔来降低请求频率(通过time库设置程序休眠时间来实现)。

如果时间间隔设置为一个固定数字,可能使爬虫程序不太像正常用户的行为,所以可通过random库设置随机数来设置随机时间间隔。

【例5-2】爬取Python中文开发者社区首页,设置两次请求之间的随机时间间隔,输出时间间隔。

(详见教材)

5.2.3典型案例

【例5-3】爬取Python中文开发者社区的Python高级教程网页,输出所有页面的URL、响应状态码和请求头。

(详见教材)

【学生】聆听、思考、理解、记录

课堂实践

【教师】分析、讲解并演示爬取哔哩哔哩网站视频信息的步骤,然后组织学生以小组为单位进行