利用爬虫爬取网页小说

ops/2024/11/30 7:19:40/

需求分析

安装requests包

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,地址做valuechapter[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,timefor 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.searchcontent=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

结果

在这里插入图片描述
在这里插入图片描述


http://www.ppmy.cn/ops/137862.html

相关文章

【代码随想录day44】【C++复健】1143.最长公共子序列;1035.不相交的线;53. 最大子序和;392. 判断子序列

1143.最长公共子序列 本题一开始以为是和前面那个一维递增子序列一样&#xff0c;dp数组的[i][j]表示的是以i&#xff0c;j为结尾的最长公共子序列&#xff0c;然后用两个for循环去前面找前缀对应的最大值&#xff0c;这样写出来的代码算上遍历总共要4次for循环&#xff0c;结…

【NLP】第三章:长短期记忆网络LSTM

三、长短期记忆网络LSTM 循环神经网络的特点就是拥有"记忆"&#xff0c;就是考虑历史信息&#xff0c;从历史信息中获取辅助当前的决策。 按记忆能力分&#xff1a;simple rnn(就是前面讲的简单rnn结构)、长短期记忆网络(LSTM)、门控循环单元(GRU)、以及双向RNN(Bi-…

shell脚本基础学习_总结篇(完结)

细致观看可以&#xff0c;访问shell脚本学习专栏&#xff0c;对应章节会有配图https://blog.csdn.net/2201_75446043/category_12833287.html?spm1001.2014.3001.5482 导语 一、shell脚本简介 1. 定义&#xff1a; 2. 主要特点&#xff1a; 3. shell脚本的基本结构 4. S…

快速搭建一个博客!!!“Halo框架深度优化:搭建你的个性化博客或网站”

目录 引言&#xff1a; 一. 首先服务器上去下载一个docker 1.可以参考官方地址&#xff1a; 2. 通过宝塔来一键安装&#xff01;&#xff01;&#xff01; 3.也可以自己下载&#xff01;&#xff01;&#xff01; 1.卸载旧版 2.配置Docker的yum库 3.安装Docker 4.启动和…

TypeScript 命名空间与模块

在 TypeScript 中&#xff0c;命名空间和模块是两种不同的代码组织方式&#xff0c;它们都旨在帮助你管理和维护大型代码库。命名空间提供了一种将相关功能组织在一起的方式&#xff0c;而模块则允许你将代码分解成可重用的单元。在本文中&#xff0c;我们将探讨命名空间和模块…

探索文件系统,Python os库是你的瑞士军刀

文章目录 探索文件系统&#xff0c;Python os库是你的瑞士军刀第一部分&#xff1a;背景介绍第二部分&#xff1a;os库是什么&#xff1f;第三部分&#xff1a;如何安装os库&#xff1f;第四部分&#xff1a;简单库函数使用方法1. 获取当前工作目录2. 改变当前工作目录3. 列出目…

利用Python爬虫阿里巴巴中国站获得跨境属性的详细指南

在全球化贸易的背景下&#xff0c;跨境电商成为了连接全球买家和卖家的重要桥梁。阿里巴巴中国站作为全球知名的B2B电子商务平台&#xff0c;提供了海量的商品信息&#xff0c;其中跨境属性信息对于跨境电商尤为重要。本文将详细介绍如何使用Python编写爬虫&#xff0c;从阿里巴…

Java WEB:从起源到现代的传奇之旅

Java Web 起源于上世纪 90 年代&#xff0c;随着网络和浏览器的飞速发展&#xff0c;Java 为应对动态处理网页的需求&#xff0c;推出了 Servlet 技术。 1. Servlet 出现之前 在 Servlet 出现之前&#xff0c;用户请求主要是静态资源&#xff0c;如 html、css 等。此时的网络…