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

news2025/1/11 7:58:44

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

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')
    # 指定了保存文件夹 -> 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()

尾语

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

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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1464775.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

docker运行onlyoffice,并配置https访问【参考仅用】

官方说明&#xff1a; Installing ONLYOFFICE Docs for Docker on a local server - ONLYOFFICEhttps://helpcenter.onlyoffice.com/installation/docs-developer-install-docker.aspx 一、容器端口、目录卷映射 sudo docker run --name容器名称 --restartalways -i -t -d -p…

【Linux进程】冯·诺依曼体系结构以及操作系统的深入理解

&#x1f4d9; 作者简介 &#xff1a;RO-BERRY &#x1f4d7; 学习方向&#xff1a;致力于C、C、数据结构、TCP/IP、数据库等等一系列知识 &#x1f4d2; 日后方向 : 偏向于CPP开发以及大数据方向&#xff0c;欢迎各位关注&#xff0c;谢谢各位的支持 目录 1.冯诺依曼体系结构特…

实习日志28

1.医院账套系统换新&#xff0c;卡片数据转移 1.1.修改旧导出的Excel 1.2.尝试导入新系统 1.3.修改导入数据再次导入即可 这个系统做的限制条件比较多&#xff0c;代码健壮性不错。 先在Excel表格里改好批量的&#xff0c;再导入检查&#xff0c;改一些细节的比较快捷。 2.…

Three.js初学(3)

Three.js初学&#xff08;3&#xff09; 动画渲染循环1. 请求动画帧2. 旋转动画 Canvas画布布局和全屏常见几何体渲染器设置GUI.js库1. 库的引入2. 如何使用初步调试进阶调试界面分组 动画渲染循环 1. 请求动画帧 requestAnimationFrame实现周期性循环执行 requestAnimationF…

SpringBoot:自定义starter

点击查看&#xff1a;LearnSpringBoot08starter 点击查看&#xff1a;LearnSpringBoot08starterTest 点击查看更多的SpringBoot教程 一、主要流程 1. 先创建空的project 2. 打开空的project 结构 图选中model 点击 3. 创建 model&#xff08;Maven&#xff09;启动器 提…

来聊聊向量查询

本文将从基本概念开始&#xff0c;讨论与向量查询相关的技术与使用。向量查询是一种复杂的数据检索技术&#xff0c;它侧重于查询与数据条目相关的上下文含义&#xff0c;而并非简单的文本匹配。 在软件项目中&#xff0c;开发人员往往会尽力搜寻各种数据库优化技术&#xff0…

mapbox面图层标注

mapbox并没有一个属性类似于’text-field’的symbol图层的直接可以标注的办法&#xff0c;这里笔者提供两种其他的面图层标注的办法用来大家参考 效果图 方案一 把面图层当做点图层直接展示 在mapbox里面&#xff0c;面图层是可以直接渲染成线图层和点图层的&#xff0c;这里…

Aigtek高压放大器是什么东西做的

在许多电子应用中&#xff0c;需要将低电压信号放大到较高电压以满足特定的需求。为了实现这个目标&#xff0c;高压放大器被广泛采用。高压放大器是一种专用电子设备&#xff0c;使用特定的电路和器件来增益输入信号的电压。它通常由以下几个主要组成部分构成。 电源供应 高压…

WRF WPS : namelist 学习笔记

WPS & share 采用ARW方式进行模拟&#xff0c;除了ARW还有NMM,不过科研上常用ARW: wrf_core ‘ARW’最大的嵌套层数为3层&#xff0c;初学者一般是从一层开始逐步加多: max_dom 3 # max_dom 2设置模式开始和结束 的时间&#xff0c;从左到右依次是第一层第二层和第三…

轻松掌握opencv的8种图像变换

文章目录 opencv的8种图像变换1. 图像放大、缩小2. 图像平移3. 图像旋转4. 图像仿射变换5. 图像裁剪6. 图像的位运算&#xff08;AND, OR, XOR&#xff09;7. 图像的分离和融合8. 图像的颜色空间 opencv的8种图像变换 1. 图像放大、缩小 我们先看下原图 import cv2 import ma…

文献速递:GAN医学影像合成--基于生成对抗网络的肺部图像分类的多域医学图像翻译生成

文献速递&#xff1a;GAN医学影像合成–基于生成对抗网络的肺部图像分类的多域医学图像翻译生成 01 文献速递介绍 在2019年底&#xff0c;一种称为2019冠状病毒病&#xff08;COVID-19&#xff09;的新型冠状病毒肺炎出现&#xff0c;迅速成为全球性大流行。感染COVID-19可以…

本机防攻击简介

定义 在网络中&#xff0c;存在着大量针对CPU&#xff08;Central Processing Unit&#xff09;的恶意攻击报文以及需要正常上送CPU的各类报文。针对CPU的恶意攻击报文会导致CPU长时间繁忙的处理攻击报文&#xff0c;从而引发其他业务的中断甚至系统的中断&#xff1b;大量正常…

IOS和Android系统架构

IOS的系统架构 iOS的为Objective-C和Swift&#xff0c;Objective-C的优势是效率高但比较“唯一”。 响应顺序&#xff1a;Touch--Media--Service--Core架构 分为四个层次&#xff1a;核心操作系统层&#xff08;core OS layer&#xff09;、核心服务层&#xff08;Core Serv…

STM32Cubemx TB6612直流电机驱动

一、TB6612FNG TB6612是一个支持双电机的驱动模块&#xff0c;支持PWM调速。PWMA、AIN1、AIN2 为一组控制引脚&#xff0c;PWMA 为 PWM 速度控制引脚&#xff0c;AIN1、AIN2 为方向控制引脚&#xff1b;PWMB、BIN1、BIN2 为一组控制引脚&#xff0c;PWMB 为 PWM 速度控制引脚&…

一种基于动态水位值的Flink调度优化算法(flink1.5以前),等同于实现flink的Credit-based反压原理

优化flink反压 说明1 flink反压介绍1.1 介绍1.2 大数据系统反压现状1.4 flink task与task之间的反压1.5 netty水位机制作用分析 2 反压优化算法3 重点&#xff01; 但是 可但是 flink1.5以后的反压过程。4 flink反压问题的查找瓶颈办法 说明 首先说明&#xff0c;偶然看了个论…

短剧小程序系统,重塑视频观看体验的科技革命

随着科技的飞速发展&#xff0c;人们对于数字化内容的消费需求也在不断增长。在这个大背景下&#xff0c;短剧小程序作为一种新型的视频观看方式&#xff0c;正逐渐受到大众的青睐。本文将探讨短剧小程序的发展背景、特点以及市场前景&#xff0c;分析其在重塑视频观看体验方面…

哪个牌子的护眼台灯比较好用?纯干货护眼台灯品牌推荐

有些家长陪孩子写作业的时候发现他们总是在揉眼睛&#xff0c;学习时间久了还会用力眨眼睛。其实无论是白天还是晚上&#xff0c;孩子在家学习&#xff0c;看书&#xff0c;搭积木等&#xff0c;如果灯光不给力&#xff0c;一定要用台灯来给孩子补光&#xff0c;避免因为光线环…

Linux系列讲解 —— 【Vim编辑器】在Ubuntu18.04中安装新版Vim

平时用的电脑系统是Ubuntu18.04&#xff0c;使用apt安装VIM的默认版本是8.0。如果想要安装新版的Vim编辑器&#xff0c;只能下载Vim源码后进行编译安装。 目录 1. 下载Vim源码2. 编译3. 安装4. 遇到的问题4.1 打开vim后&#xff0c;文本开头有乱码现象。4.2 在Vim编辑器中&…

测试环境搭建整套大数据系统(三:搭建集群zookeeper,hdfs,mapreduce,yarn,hive)

一&#xff1a;搭建zk https://blog.csdn.net/weixin_43446246/article/details/123327143 二&#xff1a;搭建hadoop&#xff0c;yarn&#xff0c;mapreduce。 1. 安装hadoop。 sudo tar -zxvf hadoop-3.2.4.tar.gz -C /opt2. 修改java配置路径。 cd /opt/hadoop-3.2.4/etc…

【Spring】SpringBoot 热部署

目 录 一.添加热部署框架支持二.Settings 开启项目自动编译三.设置运行项目中的热部署( idea 2021.2版本)四.使用 debug 方式运行项目代码示例&#xff1a; 一.添加热部署框架支持 <dependency><groupId>org.springframework.boot</groupId><artifactId&…