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请求,获取网页内容。

    ChatGPT Writer
    ChatGPT Writer

    免费 Chrome 扩展程序,使用 ChatGPT 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)来定位到包含标题的标签,然后提取它们的文本内容。

    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')来定位到包含文本的

    标签,然后提取它们的文本内容。

    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

相关专题

更多
python开发工具
python开发工具

php中文网为大家提供各种python开发工具,好的开发工具,可帮助开发者攻克编程学习中的基础障碍,理解每一行源代码在程序执行时在计算机中的过程。php中文网还为大家带来python相关课程以及相关文章等内容,供大家免费下载使用。

730

2023.06.15

python打包成可执行文件
python打包成可执行文件

本专题为大家带来python打包成可执行文件相关的文章,大家可以免费的下载体验。

630

2023.07.20

python能做什么
python能做什么

python能做的有:可用于开发基于控制台的应用程序、多媒体部分开发、用于开发基于Web的应用程序、使用python处理数据、系统编程等等。本专题为大家提供python相关的各种文章、以及下载和课程。

749

2023.07.25

format在python中的用法
format在python中的用法

Python中的format是一种字符串格式化方法,用于将变量或值插入到字符串中的占位符位置。通过format方法,我们可以动态地构建字符串,使其包含不同值。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

617

2023.07.31

python教程
python教程

Python已成为一门网红语言,即使是在非编程开发者当中,也掀起了一股学习的热潮。本专题为大家带来python教程的相关文章,大家可以免费体验学习。

1238

2023.08.03

python环境变量的配置
python环境变量的配置

Python是一种流行的编程语言,被广泛用于软件开发、数据分析和科学计算等领域。在安装Python之后,我们需要配置环境变量,以便在任何位置都能够访问Python的可执行文件。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

547

2023.08.04

python eval
python eval

eval函数是Python中一个非常强大的函数,它可以将字符串作为Python代码进行执行,实现动态编程的效果。然而,由于其潜在的安全风险和性能问题,需要谨慎使用。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

576

2023.08.04

scratch和python区别
scratch和python区别

scratch和python的区别:1、scratch是一种专为初学者设计的图形化编程语言,python是一种文本编程语言;2、scratch使用的是基于积木的编程语法,python采用更加传统的文本编程语法等等。本专题为大家提供scratch和python相关的文章、下载、课程内容,供大家免费下载体验。

705

2023.08.11

从零到实战:Python 编程系统入门专题
从零到实战:Python 编程系统入门专题

本专题面向零编程基础及初学者,系统讲解 Python 编程语言的核心知识与实战技巧。内容涵盖 Python 基础语法、数据结构、函数与模块、常用标准库、简单算法思维,以及真实应用场景下的小项目实战。通过循序渐进的学习路径,帮助读者快速建立编程思维,掌握 Python 在数据处理、自动化脚本及日常开发中的实际应用能力,为后续深入学习 Web 开发、数据分析或人工智能打下坚实基础。

2

2026.01.05

热门下载

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

精品课程

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

共14课时 | 0.7万人学习

Bootstrap 5教程
Bootstrap 5教程

共46课时 | 2.8万人学习

CSS教程
CSS教程

共754课时 | 17.7万人学习

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

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