0

0

Python网络爬虫项目:打造你的专属故事讲述者

花韻仙語

花韻仙語

发布时间:2026-01-04 09:59:18

|

997人浏览过

|

来源于php中文网

原创

想要解放双手,让程序自动为你讲述精彩的故事吗? 本文将带你走进一个激动人心的Python网络爬虫项目,教你如何利用Python技术,从互联网上抓取短篇小说,并将其转化为悦耳的声音,打造你的专属故事讲述者。我们将一步步讲解代码实现,让你轻松掌握网络爬虫、文本处理和语音合成的关键技术,开启你的编程创造之旅。项目涉及Beautiful Soup用于网页解析,gTTS实现文本转语音,以及requests库用于网页请求,通过这些技术,可以抓取网站上的短篇故事,并将其转化为语音朗读出来。无论你是编程新手,还是有一定经验的开发者,都能从中受益。

关键要点

使用Python进行网络爬虫的基础知识。

如何使用Beautiful Soup解析HTML。

使用requests库发送HTTP请求。

利用gTTS库将文本转换为语音。

构建一个自动抓取和朗读网络短篇小说的完整项目。

项目概览与技术栈

项目目标与功能

该项目的核心目标是创建一个能够自动从特定网站(例如:americanliterature.com)抓取短篇小说,并将其转化为语音进行朗读的程序。

☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜

Python网络爬虫项目:打造你的专属故事讲述者

主要功能包括:

  • 网络爬虫: 从目标网站抓取短篇小说的标题和链接。
  • 文本提取: 从小说链接的页面提取正文内容。
  • 语音合成: 将提取的小说文本转换为语音。
  • 用户交互: 允许用户选择是否朗读当前故事,或者跳过选择新的故事。
  • 可重复性: 用户可以选择是否继续听取其他故事,形成循环。

这个项目不仅能够让你在繁忙的生活中解放双眼,享受听故事的乐趣,还能让你深入了解Python在网络爬虫、文本处理和语音合成领域的应用。

技术栈详解

为了实现上述功能,我们将使用以下Python库:

立即学习Python免费学习笔记(深入)”;

  • requests: 用于发送HTTP请求,获取网页内容。通过模拟浏览器行为,我们可以轻松地从网站获取HTML源码,为后续的解析工作奠定基础。requests 库能够模拟各种 HTTP 请求,例如 GET、POST 等,并处理 cookies、headers 等复杂情况,使爬虫程序更加健壮。

    Python网络爬虫项目:打造你的专属故事讲述者

  • Beautiful Soup: 用于解析HTML和XML文档。它能够将复杂的HTML结构转化为易于操作的Python对象,方便我们提取所需的信息,如小说标题、链接和正文内容。通过CSS选择器或XPath,可以精准地定位到目标元素,极大地提高了爬虫效率。Beautiful Soup 提供了多种解析器,例如 html.parser、lxml 等,可以根据实际情况选择最合适的解析器。

  • gTTS (Google Text-to-Speech): 用于将文本转换为语音。只需简单的几行代码,就能将小说文本转化为自然流畅的语音,让程序为你朗读精彩的故事。gTTS 支持多种语言,并且可以调整语速、音调等参数,以满足不同用户的需求。此外,gTTS 还可以将语音保存为MP3文件,方便离线收听。

  • os: Python 的一个标准库,提供与操作系统交互的功能。在这个项目中,我们使用 os 模块来调用系统命令,播放生成的MP3文件。os 模块还提供了文件和目录操作、进程管理等功能,是 Python 开发中常用的工具

  • random: 用于生成随机数。在项目中,我们使用 random 模块从抓取的故事列表中随机选择一个故事进行朗读,增加程序的趣味性和多样性。random 模块提供了多种随机数生成函数,例如 randint、choice 等,可以满足不同的随机需求。

这些库相互配合,共同构建起一个功能完善、易于使用的网络爬虫项目。在接下来的章节中,我们将详细讲解每个库的使用方法,并逐步实现项目的各个功能。

代码实现详解

导入必要的库

首先,我们需要导入项目所需的Python库。

Python网络爬虫项目:打造你的专属故事讲述者

确保你已经安装了这些库。如果没有安装,可以使用pip进行安装:

pip install requests beautifulsoup4 gTTS

导入代码如下:

import os
import requests
from bs4 import BeautifulSoup
import random
from gtts import gTTS

这段代码导入了我们需要的requests(网络请求), BeautifulSoup(网页解析), random(随机选择), gTTS(文本转语音)和 os (系统操作)模块,这是程序正确运行的基础。

设置基础URL和请求头

接下来,我们需要设置目标网站的基础URL和请求头。

Python网络爬虫项目:打造你的专属故事讲述者

基础URL指定了我们要爬取的网站地址,请求头则用于模拟浏览器行为,防止网站的反爬虫机制。

URL = "https://americanliterature.com/short-short-stories"
headers = {
    'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36'
}

这里,我们设置了基础URL为https://americanliterature.com/short-short-stories,并将User-Agent设置为常见的浏览器标识。你也可以根据需要修改User-Agent,使其更具迷惑性。

编写getStory函数

getStory函数是项目的核心函数,负责抓取和处理故事。

Python网络爬虫项目:打造你的专属故事讲述者

它包含了以下步骤:

  1. 获取页面内容: 使用requests库发送GET请求,获取网页内容。

    Otter.ai
    Otter.ai

    一个自动的会议记录和笔记工具,会议内容生成和实时转录

    下载
    page = requests.get(URL, headers=headers)
  2. 创建Beautiful Soup对象: 使用Beautiful Soup解析HTML内容。

    soup = BeautifulSoup(page.content, 'html.parser')
  3. 提取故事标题: 从HTML中提取所有故事的标题,并将它们存储在一个列表中。我们使用soup.find_all('a', class_='sslink', href=True)来定位到包含标题的<a></a>标签,然后提取它们的文本内容。

    titles = []
    titlesGot = soup.find_all('a', class_='sslink', href=True)
    for title in titlesGot:
    titles.append(title.text)
  4. 随机选择一个故事: 从故事标题列表中随机选择一个故事。

    story = random.choice(titles)
  5. 用户确认: 询问用户是否要朗读选择的故事。如果用户选择“y”,则继续执行;如果选择“n”,则重新选择一个故事。

    storyOK = input(f"The story that you will be read is {story}. Is that Okay? y/n: ")
    if storyOK == 'y':
    # ... (后续步骤)
    elif storyOK == 'n':
    titles.clear()
    getStory()
  6. 获取故事链接: 根据选择的故事标题,从HTML中找到对应的链接。

    for a in titlesGot:
    if a.text == story:
        storyL = a['href']
        listenStory(storyL)
  7. 调用listenStory函数: 将故事链接传递给listenStory函数,进行后续的处理。

    递归调用: 如果用户输入“n”,程序会清空titles列表,然后递归调用getStory()函数,重新开始故事选择过程。这确保了用户可以不断地尝试,直到找到自己喜欢的故事。

getStory函数是整个项目的核心,它将网络爬虫、文本处理和用户交互等功能有机地结合在一起。通过这个函数,我们可以实现自动抓取和选择故事的功能,为后续的语音合成做好准备。

编写listenStory函数

listenStory函数负责从故事链接的页面提取正文内容,并将其转化为语音。

Python网络爬虫项目:打造你的专属故事讲述者

它包含了以下步骤:

  1. 构建完整的故事URL: 将基础URL和故事链接拼接在一起,得到完整的URL。

    storyL = "https://americanliterature.com" + storyLink
  2. 获取故事页面内容: 使用requests库发送GET请求,获取故事页面的内容。

    page = requests.get(storyL, headers=headers)
  3. 创建Beautiful Soup对象: 使用Beautiful Soup解析HTML内容。

    soup = BeautifulSoup(page.content, 'html.parser')
  4. 提取故事文本: 从HTML中提取故事的文本内容。我们使用soup.find_all('p')来定位到包含文本的<p></p>标签,然后提取它们的文本内容。

    paragraphs = soup.find_all('p')
    story = ""
    for para in paragraphs:
    story += str(para.text)
  5. 创建gTTS对象: 使用gTTS将故事文本转换为语音。

    speech = gTTS(text=story, lang='en', slow=False)
  6. 保存语音: 将生成的语音保存为MP3文件。

    speech.save("story.mp3")
  7. 播放语音: 使用os模块调用系统命令,播放MP3文件。

    os.system("mpg321 story.mp3")

listenStory函数是项目的另一个关键函数,它实现了从网页提取文本内容,并将其转化为语音进行播放的功能。通过这个函数,我们可以将抓取的故事转化为悦耳的声音,让程序真正地“讲述”故事。

如何使用项目

环境准备

  1. 安装Python: 确保你的计算机上安装了Python 3.6或更高版本。

  2. 安装必要的库: 使用pip安装requests、beautifulsoup4和gTTS库。

    pip install requests beautifulsoup4 gTTS mpg321

    注意: 如果你的系统没有安装mpg321,需要先安装它才能播放mp3文件。

  3. 安装mpg321:使用以下命令安装mpg321

    sudo apt-get install mpg321

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

WorkBuddy
WorkBuddy

腾讯云推出的AI原生桌面智能体工作台

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
数据分析的方法
数据分析的方法

数据分析的方法有:对比分析法,分组分析法,预测分析法,漏斗分析法,AB测试分析法,象限分析法,公式拆解法,可行域分析法,二八分析法,假设性分析法。php中文网为大家带来了数据分析的相关知识、以及相关文章等内容。

504

2023.07.04

数据分析方法有哪几种
数据分析方法有哪几种

数据分析方法有:1、描述性统计分析;2、探索性数据分析;3、假设检验;4、回归分析;5、聚类分析。本专题为大家提供数据分析方法的相关的文章、下载、课程内容,供大家免费下载体验。

292

2023.08.07

网站建设功能有哪些
网站建设功能有哪些

网站建设功能包括信息发布、内容管理、用户管理、搜索引擎优化、网站安全、数据分析、网站推广、响应式设计、社交媒体整合和电子商务等功能。这些功能可以帮助网站管理员创建一个具有吸引力、可用性和商业价值的网站,实现网站的目标。

759

2023.10.16

数据分析网站推荐
数据分析网站推荐

数据分析网站推荐:1、商业数据分析论坛;2、人大经济论坛-计量经济学与统计区;3、中国统计论坛;4、数据挖掘学习交流论坛;5、数据分析论坛;6、网站数据分析;7、数据分析;8、数据挖掘研究院;9、S-PLUS、R统计论坛。想了解更多数据分析的相关内容,可以阅读本专题下面的文章。

534

2024.03.13

Python 数据分析处理
Python 数据分析处理

本专题聚焦 Python 在数据分析领域的应用,系统讲解 Pandas、NumPy 的数据清洗、处理、分析与统计方法,并结合数据可视化、销售分析、科研数据处理等实战案例,帮助学员掌握使用 Python 高效进行数据分析与决策支持的核心技能。

82

2025.09.08

Python 数据分析与可视化
Python 数据分析与可视化

本专题聚焦 Python 在数据分析与可视化领域的核心应用,系统讲解数据清洗、数据统计、Pandas 数据操作、NumPy 数组处理、Matplotlib 与 Seaborn 可视化技巧等内容。通过实战案例(如销售数据分析、用户行为可视化、趋势图与热力图绘制),帮助学习者掌握 从原始数据到可视化报告的完整分析能力。

60

2025.10.14

Python异步编程与Asyncio高并发应用实践
Python异步编程与Asyncio高并发应用实践

本专题围绕 Python 异步编程模型展开,深入讲解 Asyncio 框架的核心原理与应用实践。内容包括事件循环机制、协程任务调度、异步 IO 处理以及并发任务管理策略。通过构建高并发网络请求与异步数据处理案例,帮助开发者掌握 Python 在高并发场景中的高效开发方法,并提升系统资源利用率与整体运行性能。

37

2026.03.12

C# ASP.NET Core微服务架构与API网关实践
C# ASP.NET Core微服务架构与API网关实践

本专题围绕 C# 在现代后端架构中的微服务实践展开,系统讲解基于 ASP.NET Core 构建可扩展服务体系的核心方法。内容涵盖服务拆分策略、RESTful API 设计、服务间通信、API 网关统一入口管理以及服务治理机制。通过真实项目案例,帮助开发者掌握构建高可用微服务系统的关键技术,提高系统的可扩展性与维护效率。

136

2026.03.11

Go高并发任务调度与Goroutine池化实践
Go高并发任务调度与Goroutine池化实践

本专题围绕 Go 语言在高并发任务处理场景中的实践展开,系统讲解 Goroutine 调度模型、Channel 通信机制以及并发控制策略。内容包括任务队列设计、Goroutine 池化管理、资源限制控制以及并发任务的性能优化方法。通过实际案例演示,帮助开发者构建稳定高效的 Go 并发任务处理系统,提高系统在高负载环境下的处理能力与稳定性。

47

2026.03.10

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Sass 教程
Sass 教程

共14课时 | 0.9万人学习

Bootstrap 5教程
Bootstrap 5教程

共46课时 | 3.6万人学习

CSS教程
CSS教程

共754课时 | 43万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号