当前位置: 首页 > news >正文

解锁VIP会员漫画:用Python爬虫轻松实现高清漫画下载

嗨喽~大家好呀,这里是魔王呐 ❤ ~!

python更多源码/资料/解答/教程等 点击此处跳转文末名片免费获取

环境使用:

  • Python 3.10

  • Pycharm

模块使用:

  • requests >>> pip install requests 数据请求模块

  • parsel >>> pip install parsel 数据解析模块

模块安装:

win + R 输入cmd 输入安装命令 pip install 模块名

例如: requests >>> pip install requests

爬虫实现的基本流程

一. 数据来源分析
  1. 明确需求

    明确采集的网站以及数据内容

    • 网址: https://www.mkzhan.com/209412/1004107.html

    • 数据: 漫画内容(41张图片)

  2. 抓包分析 (浏览器中进行操作)

    通过浏览器自带开发者工具, 分析我们需要的数据内容在什么地方

    • 开发开发者工具: 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
二. 代码实现步骤
  1. 发送请求

    模拟浏览器对于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')# 指定了保存文件夹 -> imgwith 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()# 提取章节IDchapter_id = li.css('a::attr(data-chapterid)').get()TitleList.append(title)ChapterIdList.append(chapter_id)return name, TitleList, ChapterIdListdef 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 += 1if __name__ == '__main__':main()

尾语

最后感谢你观看我的文章呐~本次航班到这里就结束啦 🛬

希望本篇文章有对你带来帮助 🎉,有学习到一点知识~

躲起来的星星🍥也在努力发光,你也要努力加油(让我们一起努力叭)。

最后,宣传一下呀~👇👇👇更多源码、资料、素材、解答、交流皆点击下方名片获取呀👇👇

相关文章:

解锁VIP会员漫画:用Python爬虫轻松实现高清漫画下载

嗨喽~大家好呀&#xff0c;这里是魔王呐 ❤ ~! python更多源码/资料/解答/教程等 点击此处跳转文末名片免费获取 环境使用: Python 3.10 Pycharm 模块使用: requests >>> pip install requests 数据请求模块 parsel >>> pip install parsel 数据解析模块…...

备战蓝桥杯---动态规划(入门3之子串问题)

本专题再介绍几种经典的字串问题。 这是一个两个不重叠字串和的问题&#xff0c;我们只要去枚举分界点c即可&#xff0c;我们不妨让c作为右区间的左边界&#xff0c;然后求[1,c)上的单个字串和并用max数组维护。对于右边&#xff0c;我们只要反向求单个字串和然后选左边界为c的…...

JavaScript:隐式类型转换与显式类型转换

文章目录 隐式类型转换&#xff08;Implicit Type Conversion&#xff09;1、字符串与数字的转换2、非布尔值到布尔值的转换3、在相等性比较中的转换4、对象到基础类型的转换5、在算术运算符中的其他转换 显式类型转换&#xff08;Explicit Type Conversion&#xff09;1、Numb…...

【电路笔记】-LR串联电路

LR串联电路 文章目录 LR串联电路1、概述2、示例1所有线圈、电感器、扼流圈和变压器都会在其周围产生磁场,由电感与电阻串联组成,形成 LR 串联电路。 1、概述 在本节有关电感器的第一个文章中,我们简要介绍了电感器的时间常数,指出流过电感器的电流不会瞬时变化,而是会以恒…...

Ansible 自动化运维工具的使用

目录 Ansible的简介 ansible 环境安装部署 ansible 命令行模块 command 模块 shell 模块 cron 模块 user 模块 group 模块 copy 模块 file 模块 hostname 模块 ping 模块 yum 模块 service/systemd 模块 script 模块 mount 模块 archive 模块 unarchive 模…...

亚马逊、ozon、速卖通、Lazada等跨境平台为什么评论老是被删

对于卖家而言&#xff0c;最难的并不是销售量&#xff0c;最难的是让客户在购买后能够留下一个高质量的review&#xff0c;毕竟现在的市场&#xff0c;以listing的排名为基准&#xff0c;以review数量多少和质量的高低来评判店铺的好坏 几乎所有的卖家都会有索评的烦恼&#x…...

手把手带你在Linux上安装带GPU加速的opencv库(C++版本)

1.安装依赖 sudo apt-get install build-essential cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev sudo apt-get install python-dev python-numpy python3-dev python3-numpy sudo apt-get install libtbb2 libtbb-dev libjpeg-dev l…...

【Linux】软件包管理器 yum | vim编辑器

前言: 软件包管理器 yum和vim编辑器讲解 文章目录 软件包管理器 yum编辑器-vim四种模式普通模式批量化注释和批量化去注释末行模式临时文件 软件包管理器 yum yum&#xff08;Yellowdog Updater, Modified&#xff09;是一个在基于 RPM&#xff08;管理软件包的格式和工具集合&…...

vue常见问题

文章目录 data为什么是一个函数&#xff0c;而不是一个对象&#xff1f;什么情况下可以使用对象&#xff1f;key的作用&#xff0c;为什么不能用Index&#xff1f;render函数&#xff0c;h函数&#xff0c;和template什么关系&#xff1f;vue 是怎么解析template的? template会…...

ArcgisForJS基础

文章目录 0.引言1.第一个ArcgisForJS应用程序1.1.安装部署ArcgisForJS1.2.实现ArcgisForJS应用程序 2.开发与调试工具2.1.集成开发环境2.2.调试工具2.3.Firebug 0.引言 ArcGIS API for JavaScript是一款由Esri公司开发的用于创建WebGIS应用的JavaScript库。它允许开发者通过调…...

白话微机:5.解释串行接口以及一些考研面试问题

一. 前言&#xff08;回顾世界观&#xff09; 很久很久以前&#xff0c;有这样一个世界&#xff0c;这个世界有着现实世界一样的元素&#xff1a;那里的人又有一个别的名字叫做“数据”&#xff0c;人有0有1&#xff1b;人们也有住房&#xff0c;这些住房在这个世界叫做“存储器…...

版本控制(Git)

Fork 本课程网站的仓库 将版本历史可视化并进行探索是谁最后修改了 README.md文件&#xff1f;&#xff08;提示&#xff1a;使用 git log 命令并添加合适的参数&#xff09;最后一次修改_config.yml 文件中 collections: 行时的提交信息是什么&#xff1f;&#xff08;提示&am…...

USB-C音频转接器:实现边充电边听歌的新选择 | LDR6020P

随着科技浪潮的推进&#xff0c;Type-C接口已逐渐成为电子设备的主流选择&#xff0c;以其正反随意插、高速传输和强大功能等独特优势&#xff0c;在日常生活中占据越来越重要的地位。而Type-C音频转接器&#xff0c;作为连接Type-C接口与音频设备的桥梁&#xff0c;正引领着音…...

C/C++ 怎么把多个静态库给整合成一个静态库?

来源&#xff1a;https://www.wikitechy.com/tutorials/linux/how-to-merge-two-ar-static-libraries-into-one 使用 libtool &#xff08;这也是可移植性最强的方式&#xff09;(但这通常要求两个子库也是 libtool 制作的) libtool --modelink cc -static -o libaz.la libab…...

OBD部署OceanBase集群-配置文件方式

前一篇文章介绍了OBD白屏可视化方式部署OceanBase集群 &#xff0c;其原理是把可视化设置生成为一个配置文件&#xff0c;然后使用OBD命令部署集群 本篇想使用命令行加配置文件方式&#xff0c;只部署OceanBase和ODProxy两个组件 服务器参数配置和 oceanbase-all-in-one-*.ta…...

Flink介绍

Flink 介绍 文章目录 Flink 介绍1. 简介1.1 背景1.2 用途 2. 核心概念2.1 流&#xff08;Stream&#xff09;2.2 转换&#xff08;Transformation&#xff09;2.3 窗口&#xff08;Window&#xff09;2.4 状态&#xff08;State&#xff09; 3. 编程模型3.1 编程模型介绍3.2 程…...

vscode突然连不上服务器了,以前都可以的,并且ssh等其它方式是可以连接到服务器的

过完年回来准备开工干活&#xff0c;突然发现vscode连不上服务器了&#xff0c;奇了怪了&#xff0c;年前都可以的&#xff0c;看了一下报错&#xff0c;如下&#xff0c; 以为是服务器挂了&#xff0c;结果执行ssh xxxxxx 发现是可以远程连接的&#xff0c;看来服务器没有问题…...

【shell】Shell学习后篇

Linux 常用 Shell 文章目录 Linux 常用 ShellBanner设置字体颜色设置提示操作系统操作系统版本号系统处理器架构关闭防火墙和SELinux系统操作防火墙相关获取当前目录判断文件是否存在判断目录是否存在后台挂起静默执行判断之前的命令是否成功 Banner 设置字体颜色 RED\033[31…...

协同程序原理

一、协程的本质 //协程可以分为两个部分 //1.协程函数本体 //2.协程调度器 //协程本体就是一个能够中间暂停返回的函数 //协程调度器是Unity内部实现的&#xff0c;会在对应的时机帮我们继续执行协程函数 //Unity只实现了协程调度器部分 //协程的本体本质上就是 C#的一个迭代…...

怎样保证数据库和redis里的数据一致性

使用缓存更新策略&#xff1a;在更新数据库时&#xff0c;同时更新Redis中相应的数据。这可以通过编写代码来实现&#xff0c;在数据库更新操作完成后&#xff0c;同步更新Redis中对应的数据。这可以通过在代码中使用事务来保证更新的原子性&#xff0c;确保数据库和Redis中的数…...

后进先出(LIFO)详解

LIFO 是 Last In, First Out 的缩写&#xff0c;中文译为后进先出。这是一种数据结构的工作原则&#xff0c;类似于一摞盘子或一叠书本&#xff1a; 最后放进去的元素最先出来 -想象往筒状容器里放盘子&#xff1a; &#xff08;1&#xff09;你放进的最后一个盘子&#xff08…...

Qwen3-Embedding-0.6B深度解析:多语言语义检索的轻量级利器

第一章 引言&#xff1a;语义表示的新时代挑战与Qwen3的破局之路 1.1 文本嵌入的核心价值与技术演进 在人工智能领域&#xff0c;文本嵌入技术如同连接自然语言与机器理解的“神经突触”——它将人类语言转化为计算机可计算的语义向量&#xff0c;支撑着搜索引擎、推荐系统、…...

BCS 2025|百度副总裁陈洋:智能体在安全领域的应用实践

6月5日&#xff0c;2025全球数字经济大会数字安全主论坛暨北京网络安全大会在国家会议中心隆重开幕。百度副总裁陈洋受邀出席&#xff0c;并作《智能体在安全领域的应用实践》主题演讲&#xff0c;分享了在智能体在安全领域的突破性实践。他指出&#xff0c;百度通过将安全能力…...

python报错No module named ‘tensorflow.keras‘

是由于不同版本的tensorflow下的keras所在的路径不同&#xff0c;结合所安装的tensorflow的目录结构修改from语句即可。 原语句&#xff1a; from tensorflow.keras.layers import Conv1D, MaxPooling1D, LSTM, Dense 修改后&#xff1a; from tensorflow.python.keras.lay…...

用机器学习破解新能源领域的“弃风”难题

音乐发烧友深有体会&#xff0c;玩音乐的本质就是玩电网。火电声音偏暖&#xff0c;水电偏冷&#xff0c;风电偏空旷。至于太阳能发的电&#xff0c;则略显朦胧和单薄。 不知你是否有感觉&#xff0c;近两年家里的音响声音越来越冷&#xff0c;听起来越来越单薄&#xff1f; —…...

LINUX 69 FTP 客服管理系统 man 5 /etc/vsftpd/vsftpd.conf

FTP 客服管理系统 实现kefu123登录&#xff0c;不允许匿名访问&#xff0c;kefu只能访问/data/kefu目录&#xff0c;不能查看其他目录 创建账号密码 useradd kefu echo 123|passwd -stdin kefu [rootcode caozx26420]# echo 123|passwd --stdin kefu 更改用户 kefu 的密码…...

QT3D学习笔记——圆台、圆锥

类名作用Qt3DWindow3D渲染窗口容器QEntity场景中的实体&#xff08;对象或容器&#xff09;QCamera控制观察视角QPointLight点光源QConeMesh圆锥几何网格QTransform控制实体的位置/旋转/缩放QPhongMaterialPhong光照材质&#xff08;定义颜色、反光等&#xff09;QFirstPersonC…...

GruntJS-前端自动化任务运行器从入门到实战

Grunt 完全指南&#xff1a;从入门到实战 一、Grunt 是什么&#xff1f; Grunt是一个基于 Node.js 的前端自动化任务运行器&#xff0c;主要用于自动化执行项目开发中重复性高的任务&#xff0c;例如文件压缩、代码编译、语法检查、单元测试、文件合并等。通过配置简洁的任务…...

20个超级好用的 CSS 动画库

分享 20 个最佳 CSS 动画库。 它们中的大多数将生成纯 CSS 代码&#xff0c;而不需要任何外部库。 1.Animate.css 一个开箱即用型的跨浏览器动画库&#xff0c;可供你在项目中使用。 2.Magic Animations CSS3 一组简单的动画&#xff0c;可以包含在你的网页或应用项目中。 3.An…...

push [特殊字符] present

push &#x1f19a; present 前言present和dismiss特点代码演示 push和pop特点代码演示 前言 在 iOS 开发中&#xff0c;push 和 present 是两种不同的视图控制器切换方式&#xff0c;它们有着显著的区别。 present和dismiss 特点 在当前控制器上方新建视图层级需要手动调用…...