
python爬虫脚本(获取小说)
2.获取小说章节内容。
·
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 # 中断循环(此行被注释)
更多推荐
所有评论(0)