import re
import requests
from bs4 import BeautifulSoup
# 导读
intro = """你是否也遇到过在书旗小说上看了一半的小说却没法下载全本的尴尬局面呢?本文将详细介绍如何在书旗小说上下载全本小说,让你随时随地畅读喜欢的小说。"""
# 第一步:寻找小说的URL
# 在书旗小说上搜索小说名称,找到小说的详情页,即可获得小说的URL
# 小说名称
novel_name = "全职法师"
# 构造搜索页URL
search_url = f"https://www.bookinfo.net/search.html?q={novel_name}"
# 发送请求
response = requests.get(search_url)
# 解析响应
soup = BeautifulSoup(response.text, 'html.parser')
# 找到小说详情页URL
detail_url = soup.select('.search-list > li:first-of-type > a')[0]['href']
# 第二步:获取小说的章节信息
# 进入小说详情页,找到小说的章节列表和总章节数
# 发送请求
response = requests.get(detail_url)
# 解析响应
soup = BeautifulSoup(response.text, 'html.parser')
# 获取章节列表
chapter_list = soup.select('#list > dl > dd > a')
# 获取总章节数
chapter_count = len(chapter_list)
# 第三步:下载全本小说
# 循环遍历所有章节,将每个章节的内容写入到一个文本文件中,最终合并所有文本文件
# 全本小说的内容
novel_content = ""
# 遍历所有章节
for chapter in chapter_list:
# 构造章节URL
chapter_url = detail_url.replace('.html', f"_{chapter['href']}")
# 发送请求
response = requests.get(chapter_url)
# 解析响应
soup = BeautifulSoup(response.text, 'html.parser')
# 获取章节标题
chapter_title = soup.select_one('.book-name > h1').text.strip()
# 获取章节内容
chapter_content = soup.select_one('#content').text.strip()
# 添加章节标题和内容到全本小说中
novel_content += f"{chapter_title}\n\n{chapter_content}\n\n"
# 输出当前章节下载进度
print(f"已下载 {chapter_list.index(chapter)+1}/{chapter_count} 章")
# 将全本小说写入文本文件
with open(f"{novel_name}.txt", 'w', encoding='utf-8') as file:
file.write(novel_content)
# 结束语
conclusion = """通过本文的介绍,你已经学会了在书旗小说上下载全本小说的方法。只需寻找小说的URL、获取章节信息、循环遍历所有章节并将所有章节内容写入到一个文本文件中,最终合并所有文本文件,即可获得全本小说。祝你阅读愉快!"""
# 打印总结归纳
print("总结归纳:")
print("本文介绍了如何在书旗小说上下载全本小说,包括寻找小说的URL、获取章节信息、循环遍历所有章节并将所有章节内容写入到一个文本文件中,最终合并所有文本文件。")