前言
嗨喽!大家好呀,这里是魔王~**
本次所用到知识点:
- 爬虫基本流程
- 全本小说爬取
- requests模块的使用
- 解析网页结构数据的方式
开发环境:
写代码之前我们的环境还是需要配置一下的哦~
- python3.8 解释器版本
- pycharm 代码编辑器
- requests 第三方模块
[图片上传失败...(image-d92eff-1650955518606)]
基本流程(付费 免费 基本思路都是一样的 / 不能破解任何网站):
- 发送请求 (访问网站)
- 获取数据 (网页源代码获取下来)
- 解析数据 (提取 想要一部分内容)
- 保存数据
代码
# 安装模块:
# 1. win + R 在窗口里面输入cmd 然后回车
# 2. 输入安装命令: pip install 模块名
import requests # 第三方模块 额外安装: 发送请求
import re # 正则
# 伪装
headers = {
# 身份信息
'cookie': '_yep_uuid=977f2e62-0e7e-d7eb-a296-cd83b4a0e782; e1=%7B%22pid%22%3A%22qd_P_read%22%2C%22eid%22%3A%22%22%2C%22l1%22%3A3%7D; e2=%7B%22pid%22%3A%22qd_P_read%22%2C%22eid%22%3A%22%22%2C%22l1%22%3A3%7D; newstatisticUUID=1648708045_1995757040; _csrfToken=mAWbsvESMNwir4NfKBy5fy8RedwvNBabTq3PLx6r; fu=721555856; e1=%7B%22pid%22%3A%22qd_p_qidian%22%2C%22eid%22%3A%22qd_A18%22%2C%22l1%22%3A3%7D; qdrs=0%7C3%7C0%7C0%7C1; showSectionCommentGuide=1; qdgd=1; _gid=GA1.2.261721147.1650455291; e2=%7B%22pid%22%3A%22qd_p_qidian%22%2C%22eid%22%3A%22qd_A18%22%2C%22l1%22%3A3%7D; lrbc=1029046794%7C658759613%7C0%2C1931432%7C32605352%7C1%2C1031920667%7C695153167%7C1; rcr=1029046794%2C1931432%2C1031788647%2C1031920667; bc=1029046794; _ga_FZMMH9',
# 防盗链
'referer': 'https://book.qidian.com/',
# 浏览器基本信息
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36'
}
url = 'https://book.qidian.com/info/1029046794/#Catalog'
list_html = requests.get(url, headers=headers).text
info_list = re.findall('<h2 class="book_name"><a href="(.*?)".*?">(.*?)</a></h2>', list_html)
print(info_list)
for link, title in info_list:
# 访问的链接
link = 'https:' + link
# url = 'https://read.qidian.com/chapter/dc-iNwizKg2RTIpqx7GUJA2/hYE80qdXtaW2uJcMpdsVgA2/'
# 1. 发送请求 (访问网站)
response = requests.get(link, headers=headers)
# 请求成功: <Response [200]>
# 2. 获取数据 (网页源代码获取下来)
html_data = response.text
# print(html_data)
# 3. 解析数据 (提取 想要一部分内容)
# <div class="read-content j_readContent" id="j_658759613">
# 文本内容
# </div>
# <div class="read-content j_readContent" id=".*?">(.*?)</div>
# 第一个参数: 是我们要去匹配的规则
# (.*?): 匹配任意字符 换行除外
# 第二个参数: 是我们要在哪里匹配
# 第三个参数: re.S(匹配换行)
# 以列表形式进行返回
text = re.findall('<div class="read-content j_readContent" id=".*?">(.*?)</div>', html_data, re.S)[0]
# 小说文本内容处理
# \n: win操作系统当中 \n 代表换行
text = title + '\n\n' + text.replace('<p>', '\n')
print(text)
# 4. 保存数据
with open('余下的,只有噪音.txt', mode='a', encoding='utf-8') as f:
f.write(text)
尾语
好了,我的这篇文章写到这里就结束啦!
有更多建议或问题可以评论区或私信我哦!一起加油努力叭(ง •_•)ง
喜欢就关注一下博主,或点赞收藏评论一下我的文章叭!!!
[图片上传失败...(image-7aa5ee-1650955518606)]
网友评论