TXT格式小说分章

前些日子做了个TXT阅读器,朋友提了个需求,说整篇的小说太大,重绘起来慢,而且一旦按错键(HOME(文章开头)、END(文章结尾)),想回到原来位置就难了。于是乎就弄了个分章的工具,可以把整篇的小说分成多个文件。

 

下载地址: https://download.csdn.net/download/Vicoman/1992483

 

 

### 使用 Python 爬虫抓取小说网页内容并保存为 TXT 文件 要完成这一任务,可以通过 `requests` 和 `parsel` 庉库来获取网页内容,并解析其中的小说正文部分。随后将提取的内容保存为 `.txt` 文件。 以下是具体实现方法: #### 1. 安装所需依赖 首先需要安装必要的 Python 库: ```bash pip install requests parsel tqdm ``` 这些库的作用如下: - **Requests**: 发起 HTTP 请求以获取目标网页的数据。 - **Parsel**: 提供 XPath 或 CSS Selector 功能用于解析 HTML 文档。 - **Tqdm**: 显示进度条以便观察爬取状态[^2]。 #### 2. 编写代码逻辑 下面是一个完整的代码示例,展示如何抓取小说章节并将它们保存到本地的 `.txt` 文件中: ```python import os import requests from parsel import Selector from tqdm import tqdm def fetch_chapter(url): """ 获取单章内容 """ response = requests.get(url, headers={"User-Agent": "Mozilla/5.0"}) if response.status_code != 200: raise Exception(f"请求失败: {response.status_code}") selector = Selector(response.text) title = selector.xpath('//h1/text()').get().strip() content = "\n".join(selector.xpath('//*[@id="content"]/text()').extract()).strip() return {"title": title, "content": content} def save_to_txt(chapters, file_name): """ 将章节保存为 .txt 文件 """ with open(file_name, 'w', encoding='utf-8') as f: for chapter in chapters: f.write(f"{chapter['title']}\n\n{chapter['content']}\n\n{'-'*40}\n") if __name__ == "__main__": base_url = input("请输入小说首页地址:") start_page = int(input("请输入起始页码:")) end_page = int(input("请输入结束页码:")) all_chapters = [] urls = [f"{base_url}{i}" for i in range(start_page, end_page + 1)] for url in tqdm(urls, desc="正在抓取"): try: chapter_data = fetch_chapter(url) all_chapters.append(chapter_data) except Exception as e: print(f"跳过无法访问的链接: {url}, 错误原因: {e}") output_file = "novel.txt" save_to_txt(all_chapters, output_file) print(f"\n已成功保存至文件 '{output_file}'") ``` 上述代码实现了以下功能: - 用户输入小说的 URL 地址以及起止页数。 - 遍历每一页,调用函数 `fetch_chapter()` 抓取该页的具体内容。 - 调用 `save_to_txt()` 方法将所有章节按顺序存储在一个 `.txt` 文件里[^3]。 #### 3. 注意事项 在执行此脚本前需要注意以下几点: - 确认目标网站允许被爬取,查看其 robots.txt 文件或者相关条款。 - 如果遇到反爬机制(如验证码),可能需要引入额外的技术手段解决,比如 Selenium 模拟浏览器操作。 - 对于动态加载的内容,则需借助 JavaScript 渲染引擎工具,例如 Pyppeteer 或 Playwright。 --- ###
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值