Python VIP 付费漫画,无需充值随便霍霍,零基础也能学会!

前言

大家早好、午好、晚好吖 ❤ ~欢迎光临本文章

如果有什么疑惑/资料需要的可以点击文章末尾名片领取源码

环境使用:

  • Python 3.10

  • Pycharm

模块使用:

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

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

第三方模块安装:

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

(如果你觉得安装速度比较慢, 你可以切换国内镜像源)

爬虫流程: 从单个数据到多个数据

一. 数据来源分析
  1. 明确需求: 明确采集的网站以及数据内容

    网址: https://www.mkzhan.com/214062/1025745.html

    数据: 漫画内容 38张漫画内容

  2. 抓包分析: 请求那个网址, 能够得到这38张图

    • 打开开发者工具: F12 / 右键点击检查选择 network (网络)

    • 刷新网页

    • 找到漫画图片链接: 点击Img (图片)

      单张地址: https://content.mkzcdn.com/image/20230804/64cccfe2ae025-800x1508.jpg!page-800-x?auth_key=1701173492-0-0-392b7f3719571ef0c99ca254a635aea2

    • 通过关键字去搜索, 找到所有图片对应链接地址

      单章漫画数据包地址: https://comic.mkzcdn.com/chapter/content/v1/?chapter_id=1025745&comic_id=214062&format=1&quality=1&sign=653488115409d382ed7ce4ad472e2074&type=1&uid=67916915

二. 代码实现步骤:
  1. 发送请求 -> 模拟浏览器对于url发送请求

  2. 获取数据 -> 获取服务器返回响应数据 <整个响应数据>

  3. 解析数据 -> 提取所有漫画图片链接

  4. 保存数据 -> 获取漫画内容, 保存本地文件夹中

多章数据采集: 基本的思路流程差不多

核心: 对比请求链接参数变化规律

  • 最终话: https://comic.mkzcdn.com/chapter/content/v1/?chapter_id=1025745&comic_id=214062&format=1&quality=1&sign=653488115409d382ed7ce4ad472e2074&type=1&uid=67916915

  • 630话: https://comic.mkzcdn.com/chapter/content/v1/?chapter_id=1025744&comic_id=214062&format=1&quality=1&sign=653488115409d382ed7ce4ad472e2074&type=1&uid=67916915

chapter_id: 章节ID

获取到整本漫画内容章节ID, 就可以获取整本漫画内容

多个数据采集 -> 某某ID的改变

都可以在目录页面获取到

数据包链接地址: https://www.mkzhan.com/214062/

  1. 发送请求 -> 模拟浏览器对于url发送请求

  2. 获取数据 -> 获取服务器返回响应数据 <整个响应数据>

  3. 解析数据 -> 提取漫画名字 / 章节名字 / 章节ID

整站漫画内容采集: 获取到所有漫画ID即可

代码展示

# 导入数据请求模块 < 第三方 pip install requests >
import requests
# 导入数据解析模块 < 第三方 pip install parsel >
import parsel
# 导入文件操作模块
import os

“”"
发送请求 -> 模拟浏览器对于url发送请求

  1. 模拟浏览器
  2. 请求网址
  3. 发送请求
    • requests.get() 表示使用get请求方法
      “”"
# 模拟浏览器: 请求头 (字典) <复制>
headers = {
    # User-Agent 用户代理 表示浏览器基本身份信息
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36'
}
# 请求链接
link = 'https://www.mkzhan.com/214062/'
# 发送请求
html_data = requests.get(url=link, headers=headers).text

“”"

解析数据 -> 提取漫画名字 / 章节名字 / 章节ID

  • css选择器 根据标签属性提取数据内容

  • xpath 根据标签节点提取数据内容

复制可以使用, 但是不能纯依赖复制 <需要系统学习css和xpath>

“”"

selector = parsel.Selector(html_data)
# 提取漫画名字
name = selector.css('.comic-title::text').get()
# 提取章节ID 章节名字 获取所有li标签
lis = selector.css('.j-chapter-item')

# 自动创建文件夹
filename = f'img\\{name}\\'
if not os.path.exists(filename):
    os.makedirs(filename)

for li in list(reversed(lis)):
    # 提取具体数据 a::attr(data-chapterid) 表示提取A标签里面 data-chapterid 属性
    chapter_id = li.css('a::attr(data-chapterid)').get()
    # a::text 表示提取A标签里面文本内容
    title = li.css('a::text').getall()[-1].strip()
    print(title)
    # 请求网址 <复制>
    url = f'https://comic.mkzcdn.com/chapter/content/v1/?chapter_id={chapter_id}&comic_id=214062&format=1&quality=1&sign=653488115409d382ed7ce4ad472e2074&type=1&uid=67916915'
    # 发送请求 <Response [200]> 响应对象
    response = requests.get(url=url, headers=headers)

“”"

获取数据 -> 获取服务器返回响应数据

  • response.text 获取响应文本数据 <字符串>

  • response.json() 获取响应json数据 <字典>

    数据是花括号包裹 json() 一定要是完整json数据格式

  • response.content 获取响应二进制数据

    图片 视频 音频 特定格式文件… <保存数据>

“”"

    json_data = response.json()

“”"

解析数据 -> 提取所有漫画图片链接

字典取值: 键值对取值

根据冒号左边的内容[键], 提取冒号右边的内容[值]

“”"

    # 提取图片所在列表
    pages = json_data['data']['page']
    print(pages)
    num = 1
    # for循环遍历, 提取每一个图片链接
    for page in pages:
        img = page['image']

“”"

保存数据 -> 获取漫画内容, 保存本地文件夹中

获取漫画内容: 对于漫画图片链接, 发送请求获取二进制数据

“”"

        img_content = requests.get(url=img, headers=headers).content
        # file: 文件路径 文件名字 文件格式 字符串格式化方法
        with open(file=f'{filename}{title}{num}.jpg', mode='wb') as f:
            # w 写入的字符串
            # img_content 二进制数据
            f.write(img_content)
        print(img)
        num += 1

尾语

好了,今天的分享就差不多到这里了!

对下一篇大家想看什么,可在评论区留言哦!看到我会更新哒(ง •_•)ง

喜欢就关注一下博主,或点赞收藏评论一下我的文章叭!!!

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值