大家早好、午好、晚好吖~
相信不少小伙伴都知道这个网站,特别是中二期得时候
博主我就看过,哈哈哈哈
今天我的得目的就是这个,咋来采集一下它
# 导入数据请求模块 --> 第三方模块 需要 pip install requests
import requests
# 导入数据解析模块 --> 第三方模块 需要 pip install parsel
import parsel
# 导入正则模块 --> 内置模块 不需要安装
import re
from show import get_content
请求目录页url <复制>
本文只是大致展示,完整代码和视频教程点击下方蓝字
点击 蓝色字体 自取,我都放在这里了。
模拟浏览器对于 本子 目录页面url地址 发送请求
模拟浏览器 headers 请求头 字典数据类型 <复制>
headers = {
# Cookie 用户信息, 检测是否有登陆账号 <登陆与否都是有cookie>
'Cookie': '',
# User-Agent 用户代理 表示浏览器基本身份信息
'User-Agent': ''
}
发送请求
requests模块 get模块里面方法
response = requests.get(url=url, headers=headers)
print(response)
表示请求成功
“”"
2. 获取数据: 获取服务器返回响应数据
开发者工具 --> response
response.text
获取响应文本数据 网页源代码3. 解析数据: 提取我们想要数据内容
提取本子名字 / 本子章节标题 / 本子章节url
解析数据方法:
xpath
css
re: 对于字符串数据直接提取的话
css选择器: 根据标签属性提取数据内容
转换数据类型
获取下来 response.text html
字符串数据类型
get()
获取一个 返回字符串
getall()
获取多个 返回列表
“”"
转换数据类型, 可解析对象
selector = parsel.Selector(response.text)
提取本子名字
name = selector.css('#novelName::text').get()
提取本子章节名字
titles = selector.css('.DivTd a::text').getall()
提取本子章节url
href = selector.css('.DivTd a::attr(href)').getall()
for
循环遍历, 把列表里面元素一个一个提取出来
for link, title in list(zip(href, titles))[58:]:
# https://b.faloo.com/631781_1.html
link_url = 'https:' + link
print(link_url, title)
“”"
4 / 5 发送请求, 获取数据
“”"
html_data = requests.get(url=link_url, headers=headers).text
通过css提取数据 转换数据 可解析对象
selector_1 = parsel.Selector(html_data)
提取本子内容
content_list = selector_1.css('.noveContent p::text').getall()
# join 是干嘛的?
content = '\n'.join(content_list)
len()
统计元素个数 如果是付费章节, 里面数据只有
if len(content) < 30:
“”"
关于某本子网站VIP章节内容 —> 图片形式
从章节url里面获取图片请求参数
保存图片二进制数据
通过百度云API接口 做一个文字识别, 读取图片的文字内容
保存数据
re.findall
(‘匹配什么数据’, ‘从什么地方匹配’) 找到所有我们想要数据内容
从什么地方 去匹配什么数据
从 html_data
里面 去匹配 image_do3\((.*?)\)
其中 (.*?)
表示我们想要数据内容
- \
转义字符, 把含有特殊含义字符, 转成除了本身字符以外不含有任何其他的意思
()
在正则里面表示精确匹配
选中替换内容 ctrl + R
勾选上 .*
正则
输入正则命令匹配数据替换
(.*?): (.*)
'$1': '$2',
“”"
通过正则匹配请求参数
info = re.findall('image_do3\((.*?)\)', html_data)[0].split(',')
本文只是大致展示,完整代码和视频教程点击下方蓝字
点击 蓝色字体 自取,我都放在这里了。
print(info)
data = {
'num': '0',
'o': '3',
'id': '631781',
'n': info[3],
'ct': '1',
'en': info[4],
't': '0',
'font_size': '16',
'font_color': '666666',
'FontFamilyType': '1',
'backgroundtype': '0',
'u': '15576696742',
'time': '',
'k': info[6].replace("'", ''),
}
print(info[6].replace("'", ''))
print(info[6].replace('"', ''))
发送请求获取图片二进制数据
img_content = requests.get(url=vip_url, params=data, headers=headers).content
content = get_content(img_content)
7. 保存本子内容
with open(name + '.txt', mode='a', encoding='utf-8') as f:
"""
第一章 章节名
小说内容
第二章 章节名
小说内容
"""
# 写入章节名
f.write(title)
# 回车 换一行
f.write('\n')
# 写入小说内容
f.write(content)
# 回车 换一行
f.write('\n')
print(content)
文章看不懂,我专门录了对应的视频讲解,本文只是大致展示,完整代码和视频教程点击下方蓝字
点击 蓝色字体 自取,我都放在这里了。
宁外给大家推荐一个好的教程:
【48小时搞定全套教程!你和大佬只有一步之遥【python教程】
好了,我的这篇文章写到这里就结束啦!
有更多建议或问题可以评论区或私信我哦!一起加油努力叭(ง •_•)ง
喜欢就关注一下博主,或点赞收藏评论一下我的文章叭!!!