1.获取小说目录

import requests  # 导入requests模块,用于发送HTTP请求

# 设置请求头信息,包括Cookie和User-AgentYIJING
headers = {
    'Cookie': '',     #这里删掉了我自己的信息
    'User_Agent': ''  #这里删掉了我自己的信息
}

url = "https://www.wshuw.net/2367/2367697/"  # 目标URL地址
response = requests.get(url=url, headers=headers)  # 发送GET请求获取网页内容
content = response.text  # 获取响应的文本内容

import re  # 导入正则表达式模块
p = r'<dd><a href ="(.*?)">(.*?)</a></dd>'  # 定义正则表达式匹配章节链接和标题
chs = re.findall(p, content, re.DOTALL)  # 使用正则表达式搜索所有匹配项

chapter = dict()  # 创建一个空字典存储章节信息
for ch in chs:
    chapter[ch[1]] = "https://www.wshuw.net" + ch[0]  # 将章节标题和完整URL添加到字典中

i = 7824  # 初始化章节编号
while i <= 7835:
    chapter.pop(f'第{i}章')  # 删除指定范围内的章节
    i += 1

for i in chapter:
    print(i, chapter[i])  # 打印剩余的章节信息

import json  # 导入json模块
with open('chapters.txt', 'wt', encoding='utf-8') as file:
    json.dump(chapter, file)  # 将章节信息保存到JSON文件中

2.获取小说章节内容

import requests, re  # 导入requests和re库,用于网络请求和正则表达式处理
import time, random  # 导入time和random库,用于时间控制和随机数生成
import json  # 导入json库,用于处理JSON数据

# 打开并读取chapters.txt文件,加载章节信息
with open("chapters.txt", encoding="UTF-8") as file:
    chs = json.load(file)

# 设置HTTP请求头,包括Cookie和User-Agent
headers = {
    'Cookie': 'x-web-secsdk-uid=91a9b1fd-26c3-4a04-a5d7-444bbee22c10; Hm_lvt_2667d29c8e792e6fa9182c20a3013175=1732345091; HMACCOUNT=07C9417AE3A8436C; s_v_web_id=verify_m3ttjfuo_9hL0iFhg_9eld_4BFr_84Q0_7sguuhzNKDMe; csrf_session_id=03e5b6e78edf718e6881f63ca28cbc3c; novel_web_id=7440365449727313459; Hm_lpvt_2667d29c8e792e6fa9182c20a3013175=1732345426; ttwid=1%7C2zZ8x9gEPHxD4IjMlzwSZrSTLJvygVrVQ6WIc4ZRJIQ%7C1732345427%7Cdc1fe6dc4be7b1bd74911d679bc61b4e2a208030d1b5d174a0abd0750c917216',
    'User_Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36 Edg/131.0.0.0'
}

# 遍历所有章节标题和URL
for title, url in chs.items():
    print(f"准备采集: {title}")  # 打印当前正在采集的章节标题
    response = requests.get(url, headers=headers)  # 发起伪造请求获取网页内容
    html = response.text  # 获取响应的文本内容
    # print(html)  # 输出HTML内容用于分析(此行被注释)

    # 定义正则表达式匹配章节内容
    p = r'<div id="content" class="showtxt">(.*?)</div>'
    content = re.search(p, html, re.DOTALL)  # 使用正则表达式搜索内容
    content = content.group(1).strip()  # 提取并去除首尾空白字符
    # 数据清洗,移除不需要的标签和字符
    content = re.sub("", "", content)
    content = re.sub(";", "", content)
    content = re.sub("<br />", "", content)
    content = re.sub("app2", "", content)
    content = re.sub("read2", "", content)
    content = content.replace("()", "")

    # 将清洗后的内容写入文件
    with open("我,杂役弟子,剑道无敌.txt", mode="at", encoding="utf-8") as file:
        file.write("\n\n-----------------------\n\n")  # 分隔符
        file.write("\n\n" + title + "\n\n")  # 写入章节标题
        file.write(content)  # 写入章节内容

    # 模拟用户请求间隔,休眠3到5秒
    time.sleep(random.randint(3, 5))
    print(f"{title} 章节采集完成")  # 打印章节采集完成信息
    # break  # 中断循环(此行被注释)

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐