当前位置: 首页 > ai >正文

Python爬虫实战:诗词名句网《三国演义》全集

Beautiful Soup实战案例:爬取"诗词名句网"

目标

爬取"诗词名句网"上的古典文学作品内容,包括书籍目录和章节内容,并将每章内容独立保存为文本文件。

目标网址: 《三国演义》全集在线阅读_史书典籍_诗词名句网

要求

  1. 书籍目录管理:目录名基于书籍名称动态生成

  2. 目录页解析: 下载书籍目录页HTML、解析章节列表结构

  3. 章节信息提取: 构建完整章节URL(基础URL + 相对路径)

  4. 章节内容获取: 下载各章节HTML内容

  5. 内容提取与处理: BS作为主要解析器、提取纯文本内容(去除HTML标签)

  6. 文件存储规范: 文件名安全处理、使用章节名称作为文件名

  7. 进度反馈: 目录创建成功通知 、文件写入成功确认等

代码

import requests
from bs4 import BeautifulSoup
import re
import os
from urllib.parse import urljoin
​
# 创建目录
if not os.path.exists('三国演义'):os.mkdir('三国演义')
​
# 目标网址
url = 'https://www.shicimingju.com/book/sanguoyanyi.html'
​
# 伪装浏览器
headers = {'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36 Edg/138.0.0.0'
}
​
# 发送请求,获取响应
response = requests.get(url, headers=headers)
# 进行编码
response.encoding = 'utf-8'
# 转成html对象,从而提取数据
html = BeautifulSoup(response.text,'lxml')
# 得到对象
tablis = html.select('a[class="tabli"]')
# 循环提取数据
for tabli in tablis:my_dict = {'章节名称':'','详情页地址':''}tabli_name = tabli.get_text().strip()if tabli_name:# 将章节名称进行特殊符号的替换safe_name = re.sub(r'[\\/*?<|>]','',tabli_name)my_dict['章节名称'] = safe_nametabli_href = tabli.attrs.get('href')if tabli_href:# 建立完整的url地址new_href = urljoin('https://www.shicimingju.com/',tabli_href)my_dict['详情页地址'] = new_href# 发送二次请求,获取详情内容response_content = requests.get(new_href,headers=headers)response_content.encoding = 'utf-8'# 转成html格式content_html = BeautifulSoup(response_content.text,'lxml')# 获取文本对象div_content = content_html.select('div[class="text p_pad"]')# 提取文章内容content = div_content[0].get_text()
​# 写入文件file_name = f'{safe_name}.txt'with open(os.path.join('三国演义',file_name),'w',encoding='utf-8') as f:f.write(content)print(my_dict)

http://www.xdnf.cn/news/16291.html

相关文章:

  • obd运维OceanBase数据库的常见场景
  • 0基础法考随手笔记 03(刑诉05 刑事证据与证明+06 强制措施)
  • 【Canvas技法】绘制正N角星
  • 机器学习的工作流程
  • Windows 平台源码部署 Dify教程(不依赖 Docker)
  • 手写PPO_clip(FrozenLake环境)
  • 【LeetCode 热题 100】79. 单词搜索——回溯
  • 电子电气架构 --- 车载软件交样评审流程
  • Java面试题及详细答案120道之(041-060)
  • 排序算法,咕咕咕
  • 进制定义与转换详解
  • vcpkg如何交叉编译
  • HCLP--MGER综合实验
  • 数据结构习题--删除排序数组中的重复项
  • 详解力扣高频SQL50题之1084. 销售分析 III【简单】
  • Python点阵字生成与优化:从基础实现到高级渲染技术
  • 数据恢复与备份
  • 快速入门Linux操作系统(一)
  • 立式加工中心X-Y轴传动机械结构设“cad【6张】三维图+设计说明书
  • 进阶数据结构:用红黑树实现封装map和set
  • 学习嵌入式的第三十一天-数据结构-(2025.7.23)网络协议封装
  • 数据中心-时序数据库InfluxDB
  • 掌握Gemini-2.5:现代AI开发中实用应用的综合指南
  • 二次函数图像动画展示
  • 在Power Automate Desktop中执行PowerShell获取SharePoint online某个文件夹的用户权限列表
  • excel删除重复项场景
  • 算法竞赛阶段二-数据结构(35)数据结构单链表模拟实现
  • Node.js 模拟 Linux 环境
  • 【每天一个知识点】GAN(生成对抗网络,Generative Adversarial Network)
  • Whisper语音转文字