赞
踩
Python 3.10
Pycharm
requests >>> pip install requests 数据请求模块
parsel >>> pip install parsel 数据解析模块
模块安装:
win + R 输入cmd 输入安装命令 pip install 模块名
例如: requests >>> pip install requests
明确需求
明确采集的网站以及数据内容
网址: https://www.mkzhan.com/209412/1004107.html
数据: 漫画内容(41张图片)
抓包分析 (浏览器中进行操作)
通过浏览器自带开发者工具, 分析我们需要的数据内容在什么地方
开发开发者工具: F12 / 右键点击检查选择 network (网络)
刷新网页: 让网页数据内容重新加载一遍
找到图片链接: 过滤图片直接点击Img
通过关键字找到对应数据包: 存在一个数据包含了整章漫画内容数据 (41张图)
关键字: 使用图片链接中一段参数即可
数据包地址:
https://comic.mkzcdn.com/chapter/content/v1/?chapter_id=1004107&comic_id=209412&format=1&quality=1&sign=80cc6ea2ef3e7911cdaef9199d74c66a&type=1&uid=69982021
发送请求
模拟浏览器对于url地址发送请求
模拟浏览器 (可以直接复制)
请求网址: https://comic.mkzcdn.com/chapter/content/v1/?chapter_id=1004107&comic_id=209412&format=1&quality=1&sign=80cc6ea2ef3e7911cdaef9199d74c66a&type=1&uid=69982021
发送请求: requests模块 根据开发者工具提示请求方法去发送即可
代码内容
导入模块
'''
Python学习交流,免费公开课,免费资料,
免费答疑,系统学习加QQ群:926207505
'''
import requests
import os
import parsel
import re
“”"
发送请求函数
“”"
def GetResponse(url):
# 模拟浏览器 (伪装)
headers = {
# User-Agent 用户代理, 表示浏览器基本身份信息
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36'
}
# 发送请求
response = requests.get(url=url, headers=headers)
# 返回值
return response
“”"
获取图片链接
“”"
''' Python学习交流,免费公开课,免费资料, 免费答疑,系统学习加QQ群:926207505 ''' def GetImg(ID): # 请求网址 url = f'https://comic.mkzcdn.com/chapter/content/v1/?chapter_id={ID}&comic_id=209412&format=1&quality=1&sign=80cc6ea2ef3e7911cdaef9199d74c66a&type=1&uid=69982021' # 发送请求 response = GetResponse(url=url) # 获取数据内容 JsonData = response.json() # 解析数据 1. 提取图片链接所在列表 字典取值 (基础语法) pages = JsonData['data']['page'] """ # 创建空列表 ImgList = [] # 2. 提取列表里面元素, 并且提取图片链接 for page in pages: # 提取图片链接 img = page['image'] # 把图片链接添加到 ImgList 列表里面 ImgList.append(img) """ # 列表推导式 ImgList = [page['image'] for page in pages] # 返回内容 return ImgList
“”"
保存数据函数
“”"
def Save(img, title):
# 发送请求 + 获取数据内容
ImgContent = GetResponse(url=img).content
# 程序自动创建文件夹
if not os.path.exists('img'): # 判断如果没有
# 自动创建文件夹
os.mkdir('img')
# 指定了保存文件夹 -> img
with open(f'img\\{title}.jpg', mode='wb') as f:
f.write(ImgContent)
“”"
获取漫画信息: 名字 / 章节名 / 章节ID
“”"
''' Python学习交流,免费公开课,免费资料, 免费答疑,系统学习加QQ群:926207505 ''' def GetInfo(): # 请求网址 link = 'https://www.mkzhan.com/209412/' # 发送请求 + 获取数据 HtmlData = GetResponse(url=link).text # 解析数据 selector = parsel.Selector(HtmlData) # 提取名字 name = selector.css('.de-info__box .comic-title::text').get() # 提取章节名 + 章节ID所在li标签 (所有) lis = selector.css('.chapter__list .chapter__list-box .chapter__item') # 创建空列表 TitleList = [] ChapterIdList = [] # for循环遍历, 二次提取 for li in lis: # 提取章节名字 title = li.css('a::text').getall()[-1].strip() # 提取章节ID chapter_id = li.css('a::attr(data-chapterid)').get() TitleList.append(title) ChapterIdList.append(chapter_id) return name, TitleList, ChapterIdList def main(): # 获取漫画信息 name, TitleList, ChapterIdList = GetInfo() for old_title, chapter_id in reversed(list(zip(TitleList, ChapterIdList))): # 定义函数需要调用函数 ImgList = GetImg(ID=chapter_id) # 返回图片列表 print('正在保存: ', old_title) # 定义标题变量 num = 1 # 替换特殊字符 title = re.sub(r'[\\/:*?"<>|]', '', old_title) for img in ImgList: ImgName = f'{title}-{num}' # 调用保存函数 Save(img=img, title=ImgName) num += 1 if __name__ == '__main__': main()
最后感谢你观看我的文章呐~本次航班到这里就结束啦
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。