《网络爬虫实战:小说内容抓取》教案
一、课程信息
- 课程名称:Python网络爬虫实战
- 课题内容:小说网站数据抓取与保存
- 授课对象:有一定Python基础的学生
- 课时安排:2课时(90分钟)
- 教学方式:案例演示+原理讲解+代码分析
二、教学目标
知识目标
- 理解网络爬虫的基本工作原理
- 掌握requests库获取网页数据的方法
- 掌握BeautifulSoup解析HTML结构的方法
- 掌握正则表达式在数据清洗中的应用
- 掌握文件操作和目录管理
能力目标
- 能够分析网页结构并设计爬取策略
- 能够处理分页内容的抓取
- 能够将抓取的数据规范保存
- 能够处理常见的反爬机制
情感目标
- 培养学生遵守网络道德,尊重版权
- 提高学生分析问题、解决问题的能力
- 增强学生的编程实践兴趣
三、教学重点与难点
教学重点
- 网页请求与响应处理
- HTML结构解析方法
- 多级页面数据抓取策略
教学难点
- 动态网页结构的分析
- 分页内容的连续抓取
- 异常情况的处理
四、教学准备
- 运行环境:Python 3.6+、相关库安装
- 教学素材:示例代码、课件PPT
- 网络环境:稳定网络连接
五、教学过程设计
第一课时:基础原理与代码分析(45分钟)
环节一:导入新课(5分钟)
- 情景引入:展示最终效果(本地保存的小说章节)
- 提出问题:如何自动化获取网络小说内容?
- 明确学习目标:掌握爬虫的完整工作流程
环节二:核心代码讲解(25分钟)
1. 请求模块分析(10分钟)
python
# 请求头的作用与设置
header = {'User-Agent':'浏览器标识'}
# 模拟浏览器访问,避免被网站屏蔽
# 获取网页源代码
def get_html(url):
res = requests.get(url, headers=header)
return res.text # 返回HTML文本
- 重点讲解:User-Agent的作用、GET请求过程
2. 解析模块分析(15分钟)
python
# 使用BeautifulSoup解析
soup = BeautifulSoup(html, 'lxml')
# CSS选择器查找元素
tag_div = soup.find_all('div', class_='section-box')
# 数据清洗
title = re.sub('[/*|:]','',title) # 去除非法字符
第二课时:实战演练与拓展(45分钟)
环节三:数据抓取逻辑(15分钟)
1. 多级页面抓取策略
- 第一级:小说目录页(获取章节链接)
- 第二级:章节内容页(获取正文内容)
- 第三级:分页内容(处理章节分页)
2. 数据拼接与整合
python
# 合并两页内容
content3 = content + '\n' + content2
环节四:文件保存模块(10分钟)
python
def save_data(title, content):
# 创建目录
if not os.path.exists(path):
os.mkdir(path)
# 保存文件
with open(f'{path}/{title}.txt','w',encoding='utf-8') as f:
f.write(content)
环节五:代码优化讨论(10分钟)
-
当前代码的不足:
- 没有异常处理
- 没有进度显示
- 没有去重机制
- 可能会被网站封禁
-
优化建议:
- 添加time.sleep()避免频繁请求
- 添加try-except处理网络异常
- 添加日志记录功能
- 考虑使用代理IP
环节六:课堂实践(10分钟)
任务布置:
- 修改代码,抓取不同的小说
- 添加异常处理机制
- 增加抓取进度显示
六、教学板书设计
网络爬虫工作流程
┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐
│ 发起请求 │──→│获取响应 │──→│解析数据 │──→│保存数据 │
└─────────┘ └─────────┘ └─────────┘ └─────────┘
↓ ↓ ↓ ↓
requests.get() response.text BeautifulSoup 文件操作
↓ ↓ ↓ ↓
添加headers HTML源码 find/find_all open()
七、作业布置
- 基础题:运行现有代码,成功抓取3章小说内容
- 提高题:为代码添加异常处理模块
- 拓展题:尝试抓取其他结构的小说网站
八、教学反思要点
- 学生对网页结构分析的理解程度
- 分页抓取逻辑的掌握情况
- 异常处理意识的培养效果
- 版权教育是否到位
九、注意事项
- 版权强调:提醒学生仅用于学习,不得商用
- 法律意识:遵守robots协议,尊重网站规定
- 技术伦理:控制请求频率,不影响网站正常运行
- 学习迁移:强调思路方法,而非具体网站
十、教学资源
- 完整代码文件
- BeautifulSoup官方文档链接
- 正则表达式速查表
- 常见反爬机制应对策略
教学提示:在实际授课中,建议先演示完整效果,再分模块讲解。对于难点部分(如分页抓取),可以用流程图辅助讲解。最后一定要强调网络爬虫的合法合规使用。