《网络爬虫实战:小说内容抓取》教案

《网络爬虫实战:小说内容抓取》教案

一、课程信息

  • 课程名称:Python网络爬虫实战
  • 课题内容:小说网站数据抓取与保存
  • 授课对象:有一定Python基础的学生
  • 课时安排:2课时(90分钟)
  • 教学方式:案例演示+原理讲解+代码分析

二、教学目标

知识目标

  1. 理解网络爬虫的基本工作原理
  2. 掌握requests库获取网页数据的方法
  3. 掌握BeautifulSoup解析HTML结构的方法
  4. 掌握正则表达式在数据清洗中的应用
  5. 掌握文件操作和目录管理

能力目标

  1. 能够分析网页结构并设计爬取策略
  2. 能够处理分页内容的抓取
  3. 能够将抓取的数据规范保存
  4. 能够处理常见的反爬机制

情感目标

  1. 培养学生遵守网络道德,尊重版权
  2. 提高学生分析问题、解决问题的能力
  3. 增强学生的编程实践兴趣

三、教学重点与难点

教学重点

  1. 网页请求与响应处理
  2. HTML结构解析方法
  3. 多级页面数据抓取策略

教学难点

  1. 动态网页结构的分析
  2. 分页内容的连续抓取
  3. 异常情况的处理

四、教学准备

  1. 运行环境:Python 3.6+、相关库安装
  2. 教学素材:示例代码、课件PPT
  3. 网络环境:稳定网络连接

五、教学过程设计

第一课时:基础原理与代码分析(45分钟)

环节一:导入新课(5分钟)
  1. 情景引入:展示最终效果(本地保存的小说章节)
  2. 提出问题:如何自动化获取网络小说内容?
  3. 明确学习目标:掌握爬虫的完整工作流程
环节二:核心代码讲解(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分钟)
  1. 当前代码的不足

    • 没有异常处理
    • 没有进度显示
    • 没有去重机制
    • 可能会被网站封禁
  2. 优化建议

    • 添加time.sleep()避免频繁请求
    • 添加try-except处理网络异常
    • 添加日志记录功能
    • 考虑使用代理IP
环节六:课堂实践(10分钟)

任务布置

  1. 修改代码,抓取不同的小说
  2. 添加异常处理机制
  3. 增加抓取进度显示

六、教学板书设计

复制代码
网络爬虫工作流程
┌─────────┐    ┌─────────┐    ┌─────────┐    ┌─────────┐
│  发起请求  │──→│获取响应 │──→│解析数据 │──→│保存数据 │
└─────────┘    └─────────┘    └─────────┘    └─────────┘
     ↓              ↓              ↓              ↓
requests.get()   response.text  BeautifulSoup   文件操作
     ↓              ↓              ↓              ↓
添加headers      HTML源码     find/find_all     open()

七、作业布置

  1. 基础题:运行现有代码,成功抓取3章小说内容
  2. 提高题:为代码添加异常处理模块
  3. 拓展题:尝试抓取其他结构的小说网站

八、教学反思要点

  1. 学生对网页结构分析的理解程度
  2. 分页抓取逻辑的掌握情况
  3. 异常处理意识的培养效果
  4. 版权教育是否到位

九、注意事项

  1. 版权强调:提醒学生仅用于学习,不得商用
  2. 法律意识:遵守robots协议,尊重网站规定
  3. 技术伦理:控制请求频率,不影响网站正常运行
  4. 学习迁移:强调思路方法,而非具体网站

十、教学资源

  1. 完整代码文件
  2. BeautifulSoup官方文档链接
  3. 正则表达式速查表
  4. 常见反爬机制应对策略

教学提示:在实际授课中,建议先演示完整效果,再分模块讲解。对于难点部分(如分页抓取),可以用流程图辅助讲解。最后一定要强调网络爬虫的合法合规使用。

相关推荐
cipher6 天前
crawl4ai:AI时代的数据采集利器——从入门到实战
后端·爬虫·python
深蓝电商API6 天前
结构化数据提取:XPath vs CSS 选择器对比
爬虫·python
易辰君6 天前
【Python爬虫实战】正则:中文匹配与贪婪非贪婪模式详解
开发语言·爬虫·python
深蓝电商API6 天前
爬虫增量更新:基于时间戳与哈希去重
爬虫·python
电商API_180079052477 天前
京东商品评论API接口封装的心路历程
服务器·开发语言·爬虫·数据分析·php
袁袁袁袁满7 天前
Haystack与亮数据MCP工具结合实现自动化爬虫
爬虫·python·网络爬虫·数据采集·爬虫实战·视频爬虫·特推爬虫
深蓝电商API7 天前
Redis 作为爬虫去重与任务队列实战
爬虫·python
IP搭子来一个7 天前
爬虫使用代理IP全解析:原理、类型与实战指南
爬虫·网络协议·tcp/ip
iFeng的小屋7 天前
【2026最新xhs爬虫】用Python批量爬取关键词笔记,异步下载高清图片!
笔记·爬虫·python
嫂子的姐夫7 天前
030-扣代码:湖北图书馆登录
爬虫·python·逆向