前言
嗨喽,大家好呀~这里是爱看美女的茜茜呐
环境使用:
-
Python 3.8
-
Pycharm
模块使用:
-
requests >>> pip install requests 数据请求模块
-
parsel >>> pip install parsel 数据解析模块
安装方法:
win + R 输入cmd 输入安装命令 pip install 模块名
(如果你觉得安装速度比较慢, 你可以切换国内镜像源)
本次 采集目标:灵剑尊
👇 👇 👇 更多精彩机密、教程,尽在下方,赶紧点击了解吧~
素材、视频教程、完整代码、插件安装教程我都准备好了,直接在文末名片自取就可
案例分为三部分:
一. 采集单章漫画内容
二. 采集整本漫画内容
三. 采集整个网站内容
代码展示
导入模块
# 导入数据请求模块
import requests
# 导入数据解析模块
import parsel
# 导入正则
import re
"""
1. 发送请求: 模拟浏览器对于url地址发送请求
- 模拟浏览器: 防止被反爬
headers请求头 <开发者工具中复制>
- 请求url地址
- 发送请求 / 请求方式
"""
模拟浏览器 构建字典形式
headers = {
# User-Agent 用户代理 表示浏览器基本身份信息
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36'
}
请求目录页
link = 'https://www.mkzhan.com/209412/'
```python
# 发送请求
link_response = requests.get(url=link, headers=headers)
获取数据 response.text 获取响应文本数据
link_data = link_response.text
"""
3. 解析数据: 提取我们需要的内容 <章节名字 / 章节ID>
css/xpath 根据标签去提取数据
"""
把获取到 link_data, 转成可解析对象
selector = parsel.Selector(link_data)
提取所有li标签
lis = selector.css('.chapter__list-box li')
for li in reversed(lis):
# 章节ID
chapter_id = li.css('a::attr(data-chapterid)').get()
# 标题
title = li.css('a::text').getall()[-1].strip()
new_title = re.sub(r'[\\/:*?"<>|]', '', title)
print(chapter_id, new_title)
请求url地址
url = f'https://*****chapter/content/v1/?chapter_id={chapter_id}&comic_id=209412&format=1&quality=1&sign=6ea4c8f31223f71074cf40a3df72ddb2&type=1&uid=64751792'
发送请求
response = requests.get(url=url, headers=headers)
"""
2. 获取数据: 获取服务器返回响应数据
<Response [200]> 响应对象
200 状态码 表示请求成功
response.json() 获取响应json数据内容
3. 解析数据: 提取我们需要的内容 <图片链接>
response.json() --> 字典
需要的数据 --> image对应值
字典取值: 键值对取值 <根据冒号左边的内容[键], 提取冒号右边的内容[值]>
"""
定义num 作为文件名序号
num = 1
for index in response.json()['data']['page']:
# 漫画内容链接
img_url = index['image']
"""
4. 保存数据: 获取图片内容, 保存本地文件夹
- 获取图片内容 <对于图片链接发送请求, 然后获取二进制数据内容>
response.content 获取响应二进制数据
"""
对于图片链接发送请求, 获取二进制数据 <图片内容>
img_content = requests.get(url=img_url, headers=headers).content
# 'img\\' + str(num) + '.jpg' 设置文件路径和文件名格式
# mode='wb' 保存方式
# as f 重命名为F
with open('img\\' + new_title + str(num) + '.jpg', mode='wb') as f:
# 写入数据
f.write(img_content)
# 每次循环加1
num += 1
print(img_url)
尾语
感谢你观看我的文章呐~本次航班到这里就结束啦 🛬
希望本篇文章有对你带来帮助 🎉,有学习到一点知识~
躲起来的星星🍥也在努力发光,你也要努力加油(让我们一起努力叭)。