利用爬虫爬取网页小说

需求分析

安装requests包

bash 复制代码
pip	install	requests

目录采集地址:
h t t p s : / / w w w . 3 b q g . c c / b o o k / 60417 / https://www.3bqg.cc/book/60417/ https://www.3bqg.cc/book/60417/

章节采集地址:
h t t p s : / / w w w . 3 b q g . c c / b o o k / 60417 / 1. h t m l https://www.3bqg.cc/book/60417/1.html https://www.3bqg.cc/book/60417/1.html

pycharm代码实现

python 复制代码
#导入requests模块和re模块
import  requests,re

#要爬取的网址
url="https://www.3bqg.cc/book/60417"

#伪造请求

#声明一个身份代理信息,随便进入一个网页检查------网络------标头即可找到User-Agent
headers={
    "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"
}
#发起一个伪造请求
# requests.get(url1,headers=headers)
#接收服务器返回的数据
response=requests.get(url,headers=headers)

#设置响应编码
response.encoding="UTF-8"

#查看响应数据
content=response.text
#print(content)
python 复制代码
#正则提取章节名称和链接
p=r'<a href ="(.*?)"\>(第.*?)>'
chs=re.findall(p,content,re.DOTALL)
#print(chs)
#提取出来后章节链接与章节名在一个列表中

注意

re.DOTALL:这是一个标志,告诉正则表达式模块 .(点)元字符应该匹配包括换行符在内的任意字符。通常情况下,. 不匹配换行符,但当你使用 re.DOTALL 标志时,它将匹配任何字符,包括换行符。如果不使用 re.DOTALL 标志, . 不匹配换行符,所以无法匹配整个多行字符串。

re.findall 是 Python 的 re(正则表达式)模块中的一个函数,它的作用是在一个字符串中查找所有与正则表达式匹配的部分,并将它们作为一个列表返回。

python 复制代码
#声明一个字典
chapter=dict()
for ch in chs:
	#以章节名做key,地址做value
    chapter[ch[1]]="https://www.3bqg.cc"+ch[0]
#print(chapter)
#导入jasn模块
import json
with open('chapters.txt','wt',encoding='utf-8') as file:
	#将 chapter 字典转换为 JSON 格式的字符串,并将其写入到 file 变量所引用的文件中
    json.dump(chapter, file)

#加载需要的目录
with open('chapters.txt',encoding='utf-8') as file:
    ac=json.load(file)
    #print(ac)


#伪造请求
headers={
"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"
}
import random,time

for title , url in ac.items():
    with open("道诡异仙.txt",mode="at",encoding='utf-8') as file:
        print(f"准备采集:{title}")
        #发起伪造请求
        res=requests.get(url,headers=headers)
        #设置数据编码
        res.encoding=("UTF-8")
        #分析数据格式
        consequence=res.text
        # print(consequence)
        #定义正则表达式,匹配数据
        a=r'<div id="chaptercontent"+\s+class="Readarea+\s+ReadAjax_content">(.*?)</div>'
        
		#打印获取的某一章的内容
		#第一种fangfa
        #content=re.findall(a,consequence,re.DOTALL)
        #print(content)
        
		#第二种方法
        # 只有一条数据,可以用re.search
        content=re.search(a,consequence,re.DOTALL)
        #使用content.group()获取第一个捕获组的内容
        content=content.group(1)
        #print(content)

        #提取出汉字的正则表达式=r'[\u4e00-\u9fff]+'
        content2=re.findall(r'[\u4e00-\u9fff]+', content)
        content2="\n".join(content2)
        #print(content2)
        #保存到文件
        file.write("\n\n"+title+"\n\n")#标题
        file.write(content2)#内容

        time.sleep(random.randint(2,4))
        print(f"{title}章节采集完成")
        #测试,采集一次
        #break

结果


相关推荐
王小王-1238 分钟前
基于Python的车联网数据聚合与可视化分析平台设计与实现
python·车联网·新能源汽车·车联网聚合分析
有味道的男人26 分钟前
利用爬虫获取中国制造网商品详情:高效采集完整方案
爬虫·制造
叫我:松哥35 分钟前
基于Flask框架的校园二手书籍交易平台,注重校园场景的特殊需求,通过学号认证保障用户真实性
后端·python·sqlite·flask·bootstrap
namexingyun1 小时前
开源前端生态如何成为 AI UI 生成的“燃料“:shadcn/ui、Tailwind CSS、Storybook 技术价值全解剖
java·前端·人工智能·python·ui·开源·ai编程
通信仿真爱好者1 小时前
第【17】期--考虑硬件损伤和不完美CSI的RIS-MISO系统的深度强化学习联合优化-python完整代码+参考文献
python·深度强化学习·ris
装不满的克莱因瓶1 小时前
自然语言处理常见任务——从文本理解到生成式AI的完整任务体系
人工智能·pytorch·python·深度学习·ai·自然语言处理
ptc学习者1 小时前
python 中描述符@property property 大概的样子
开发语言·python
zmzb01031 小时前
Python课后习题训练记录Day129
开发语言·python
秋91 小时前
Python工程师面试常问提问和回答(AI工程化方向 · 2026版)
人工智能·python·面试
炎武丶航1 小时前
LeNet-5深度学习详解:从手写数字识别到代码实战
人工智能·python·深度学习·机器学习·ai·cnn·lenet