2024/5/10
小说网站的URL,需要替换为实际地址
novel_url = '
' chapters = fetch_chapters(novel_url) 3. 下载小说章节内容 Python def download_chapter_content(chapter_url): response = requests.get(chapter_url) soup = BeautifulSoup(response.text, 'lxml') # 假设章节内容在一个特定的div或p标签内 content = soup.find('div', class_='content').text return content
假设章节URL列表已获取
for chapter_url in chapters: content = download_chapter_content(chapter_url) # 将内容保存到本地文件 with open(f'章节_{chapter_url.split('/')[-1]}.txt', 'w', encoding='utf-8') as file: file.write(content) 4. 本地阅读 本地阅读功能相对简单,主要是读取文件内容并打印或显示。Python的内置函数即可完成此任务。
- 语音阅读 使用pyttsx3库实现文本转语音:
Python import pyttsx3
def text_to_speech(text): engine = pyttsx3.init() engine.say(text) engine.runAndWait()
读取之前下载的章节内容并转换为语音
with open('章节_示例.txt', 'r', encoding='utf-8') as file: content = file.read() text_to_speech(content) 6. 更改文字格式(简单示例) 如果你是指在文本处理上的格式更改(如大小写转换),可以使用Python字符串方法。如果是希望转换文档格式(如TXT转PDF),则需使用如pdfkit或weasyprint这样的库。
文本处理示例: Python def format_text(text, mode='upper'): # 示例仅包含转换为大写,可根据需要扩展 if mode == 'upper': return text.upper() # 可以添加更多格式化选项 return text
formatted_text = format_text(content) print(formatted_text)整合到
整合上述各个功能到一个完整的Python脚本中,以便从指定的小说网站抓取章节链接、下载章节内容、保存至本地、提供本地阅读、语音阅读以及简单的文字格式转换功能,代码如下:
1import requests
2from bs4 import BeautifulSoup
3import pyttsx3
4import os
5
6def fetch_chapters(url):
7 response = requests.get(url)
8 soup = BeautifulSoup(response.text, 'lxml')
9 chapters = []
10 for chapter_link in soup.select('.chapter-link'): # 根据实际网站结构调整选择器
11 chapters.append(chapter_link['href'])
12 return chapters
13
14def download_chapter_content(chapter_url):
15 response = requests.get(chapter_url)
16 soup = BeautifulSoup(response.text, 'lxml')
17 content = soup.find('div', class_='content').text # 根据实际网站结构调整选择器
18 return content
19
20def save_chapters_locally(chapters, novel_url):
21 for idx, chapter_url in enumerate(chapters, start=1):
22 content = download_chapter_content(chapter_url)
23 filename = f'章节_{idx}_{chapter_url.split("/")[-1]}.txt'
24 with open(filename, 'w', encoding='utf-8') as file:
25 file.write(content)
26 print(f'章节已保存: {filename}')
27
28def read_locally(filename):
29 with open(filename, 'r', encoding='utf-8') as file:
30 print(file.read())
31
32def text_to_speech(text):
33 engine = pyttsx3.init()
34 engine.say(text)
35 engine.runAndWait()
36
37def format_text(text, mode='upper'):
38 if mode == 'upper':
39 return text.upper()
40 return text
41
42# 主程序开始
43if __name__ == "__main__":
44 novel_url = 'http://example.com/novel' # 替换为实际小说网址
45 chapters = fetch_chapters(novel_url)
46 save_chapters_locally(chapters, novel_url)
47
48 # 示例:读取第一个章节并转换为语音
49 first_chapter_filename = f'章节_1_{chapters[0].split("/")[-1]}.txt'
50 read_locally(first_chapter_filename)
51 with open(first_chapter_filename, 'r', encoding='utf-8') as file:
52 content = file.read()
53 formatted_content = format_text(content, mode='upper') # 示例:转换为大写
54 print("格式化后的文本:", formatted_content)
55 text_to_speech(formatted_content) # 将格式化后的文本转换为语音
请注意,这个脚本是一个基础示例,实际应用时需要根据目标网站的具体结构调整选择器。同时,为了尊重版权和用户协议,请确保你的爬取行为符合网站的规定。此外,在进行语音合成时,确保安装了pyttsx3
库,并且对于频繁的语音合成任务,考虑到性能和资源消耗问题。