简单爬虫(求过审核)

news2024/11/23 10:13:39

游客可以领取七天vip,愉快的开始爬取吧!

首先从单章入手:逆天邪神漫画 第1话 两世为人 - 漫客栈

一章有很多图片,每一张图片都有自己的地址,目标就是找到一个包,包含这一章所有图片的地址。

打开开发者工具——刷新,找到图片的位置,复制图片链接的关键参数,进行搜索。

 找到这个数据包,那么就开始发送请求,获取图片链接,进行保存吧。

代码展现:


import requests
import os
filename = 'img\\'
if not os.path.exists(filename):
    os.mkdir(filename)
def get_response(url):
    headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"
    }
    response = requests.get(url=url,headers=headers)
    return response
def save_img(title,img_url):
    img_content = get_response(img_url).content
    with open(filename+str(title)+'.jpg','wb') as f:
        f.write(img_content)

if __name__ == '__main__':
    url = 'https://comic.mkzcdn.com/chapter/content/v1/?chapter_id=735749&comic_id=213295&format=1&quality=1&type=1'
    response = get_response(url)
    img_url_list = [page['image'] for page in response.json()['data']['page']]  #列表推导式,获取所有图片的链接地址
    title = 0
    for img_url in img_url_list:
        title = title+1
        print(title)
        save_img(title,img_url)

结果展现:

比较第一章和第二章的载荷参数的不同

发现就只有chapter_id是不同的,故目前的目标就是找到每一章节的chapter_id,那么如何找呢,谨记在目录页可以找到。

找到数据包,那么开始解析数据吧

获取章节的id和章节的名字 

def get_info():
    url = 'https://www.mkzhan.com/213295/'
    response = get_response(url).text
    selector = parsel.Selector(response)
    title = selector.css('.comic-title::text').get()
    lis = selector.css('.j-chapter-item')
    print(title)
    for li in lis:
        chapter_id = li.css('a::attr(data-chapterid)').get()
        chapter_title = li.css('a::text').getall()[-1].strip()
        print(chapter_id,chapter_title)

结果展现:

现在跟前面的联系起来,完整代码展现:

import parsel
import requests
import os
def create_filename(title):
    filename = f'{title}\\'
    if not os.path.exists(filename):
        os.mkdir(filename)
def create_title_filename(filename,title):
    filename = filename+f'{title}\\'
    if not os.path.exists(filename):
        os.mkdir(filename)

def get_response(url):
    headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"
    }
    response = requests.get(url=url,headers=headers)
    return response
def save_img(filename,chapter_title,num,img_url):
    img_content = get_response(img_url).content
    with open(filename+chapter_title+'\\'+str(num)+'.jpg','wb') as f:
        f.write(img_content)

def get_info():
    url = 'https://www.mkzhan.com/213295/'
    response = get_response(url).text
    selector = parsel.Selector(response)
    title = selector.css('.comic-title::text').get()
    lis = selector.css('.j-chapter-item')
    chapterid_list = []
    chapter_title_list = []
    print(title)
    for li in lis:
        chapter_id = li.css('a::attr(data-chapterid)').get()
        chapter_title = li.css('a::text').getall()[-1].strip()
        chapterid_list.append(chapter_id)
        chapter_title_list.append(chapter_title)
    chapterid_list.reverse()
    chapter_title_list.reverse()
    print(chapterid_list)
    print(chapter_title_list)
    return title,chapterid_list,chapter_title_list

if __name__ == '__main__':
    title,chapter_id_list,chapter_title_list = get_info()
    create_filename(title)
    filename = f'{title}\\'
    for chapter_id,chapter_title in zip(chapter_id_list,chapter_title_list):
        print(f'正在保存第{chapter_title}的内容')
        create_title_filename(filename,chapter_title)
        url = f'https://comic.mkzcdn.com/chapter/content/v1/?chapter_id={chapter_id}&comic_id=213295&format=1&quality=1&type=1'
        response = get_response(url)
        img_url_list = [page['image'] for page in response.json()['data']['page']] #列表推导式,获取所有图片的链接地址
        num = 0
        for img_url in img_url_list:
            num = num + 1
            save_img(filename, chapter_title, num, img_url)

结果展现:

这就是这个案例啦,其实如果它狠心一点,大可以在载荷设置加密参数,或者在请求头要求cookie或者token。 

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

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

相关文章

人脸识别业务(基于腾讯人脸识别接口)

使用腾讯云人脸识别接口,基于优图祖母模型。 一、准备工作 人脸识别账号 申请腾讯云服务器账号,生成自己的秘钥。记录秘钥和秘钥ID。 创建人员库 记下人员库id 在配置文件application.yml中添加配置。 plateocr:SecretId: 秘钥IDSecretKey: 秘钥ser…

全国水科技大会 免费征集《水环境治理减污降碳协同增效示范案例》

申报时间截止到2024年4月15日,请各单位抓紧申报,申报条件及申报表请联系:13718793867 围绕水环境治理减污降碳协同增效领域,以资源化、生态化和可持续化为导向,面向生态、流城、城市、农村、工业园区、电力、石化、钢…

高效实现红黑树范围查询:RB-ENUMERATE操作的设计与分析

高效实现红黑树范围查询:RB-ENUMERATE操作的设计与分析 一、RB-ENUMERATE操作的需求分析二、RB-ENUMERATE操作的设计思路三、RB-ENUMERATE操作的具体实现四、性能分析五、结论 在红黑树的广泛应用中,我们经常需要对树中的元素进行查询和操作。除了基本的…

堆放砖块-第12届蓝桥杯选拔赛Python真题精选

[导读]:超平老师的Scratch蓝桥杯真题解读系列在推出之后,受到了广大老师和家长的好评,非常感谢各位的认可和厚爱。作为回馈,超平老师计划推出《Python蓝桥杯真题解析100讲》,这是解读系列的第47讲。 堆放砖块&#xf…

SuperMap GIS基础产品FAQ集锦(202403)

一、SuperMap GIS基础产品桌面GIS-FAQ集锦 问题1:【iDesktop】安装了idesktop 11i,现想进行插件开发,根据安装指南安装SuperMap.Tools.RegisterTemplate.exe,运行多次均失败 【问题原因】该脚本是之前老版本针对VS2010写的&…

亚信安慧AntDB:点亮数据灯塔

亚信安慧AntDB 是国产的分布式数据库,它具备快速发展的潜力。随着互联网技术的迅猛发展,大数据时代的到来,数据库的需求不断增长。在这样的背景下,国产分布式数据库正逐渐崭露头角,AntDB作为其中的重要代表&#xff0c…

MySQL学习笔记(数据类型, DDL, DML, DQL, DCL)

Learning note 1、前言2、数据类型2.1、数值类型2.2、字符串类型2.3、日期类型 3、DDL总览数据库/表切换数据库查看表内容创建数据库/表删除数据库/表添加字段删除字段表的重命名修改字段名(以及对应的数据类型) 4、DML往字段里写入具体内容修改字段内容…

Android输入框架

输入是一个操作系统的重要组成部分,没有输入,用户就无法向系统发送指令,也就没法完成人机交互。在Android系统中,输入系统是不可缺少的,下面简单介绍输入系统的整体框架,以下内容参考清华出版社出版的《And…

[react] useRef场景

1.记忆功能 -- 清定时器 先看和useState的差别 代码如下 不断地开启定时器 加上缓存就行,这样每次都是它 2.获取dom节点 当然!你可以直接在模板上面写函数! 函数变种也是可以的 你想获取整个组件也是没问题的 import React, { useRef, forwardRef } from "react";…

uniapp 2.0可视化开发工具高级事件使用技巧探索

摘要 随着移动应用市场的不断扩大和前端技术的飞速发展,开发者们对于快速、高效构建跨平台应用的需求日益增强。uniapp作为一款优秀的跨平台应用开发框架,凭借其强大的功能和易用的特性,赢得了广大开发者的青睐。在uniapp 2.0版本中&#xf…

ht1622不显示无反应问题解决

如果你正在写ht1622 驱动时,怎么看程序都没问题,抓取波形,示波器分析波形,如果都没有问题,那么很大可能是硬件问题,检测看看 ht1622 RD是不是接地了。 RD 低会进入读取模式,所以不用RD 请将RD悬…

基于Java+SpringBoot+Vue养老院管理系统(源码+文档+部署+讲解)

一.系统概述 随着信息时代的来临,过去的传统管理方式缺点逐渐暴露,对过去的传统管理方式的缺点进行分析,采取计算机方式构建养老院管理系统。本文通过课题背景、课题目的及意义相关技术,提出了一种社区活动、活动记录、床位信息、…

C++类与对象上(个人笔记)

类与对象 1.面向过程和面向对象初步认识2.类的定义3.类的访问限定符及封装3.1 访问限定符 4.封装5.类的实例化6.类对象6.1类对象的内存计算6.2内存对齐规则(回顾) 7.this指针7.1 this指针的特性 1.面向过程和面向对象初步认识 C语言是面向过程的&#x…

RabbitMQ安装延时插件

下载延迟插件 在 RabbitMQ 的 3.5.7 版本之后,提供了一个插件(rabbitmq-delayed-message-exchange)来实现延迟队列 ,同时需保证 Erlang/OPT 版本为 18.0 之后。 我这里 MQ 的版本是 3.10.0 现在去 GitHub 上根据版本号下载插件 链…

Go第三方框架--ants协程池框架

1. 背景介绍 1.1 goroutine ants是站在巨人的肩膀上开发出来的,这个巨人是goroutine,这是连小学生都知道的事儿,那么为什么不继续使用goroutine(以下简称go协程)呢。这是个思考题,希望讲完本文大家可以有个答案。 go协程只涉及用…

Echarts柱状图多样式实现

样式一 样式二 在这里插入代码片

MATLAB 点云体素滤波 (58)

MATLAB 体素滤波 (58) 一、基本原理二、算法实现1.代码数据的海量性始终是点云处理时需要面临的一个大问题,严重的时间消耗和内存占用影响了点云处理的发展,当然了,点云数量主要应该看项目的实际需求,若是对细节要求较高,那么点云数量不可过少,但是要求过低时,我们就可…

蓝桥杯——16

学习视频&#xff1a;17-深搜的剪枝策略视频讲解_哔哩哔哩_bilibili #include<iostream> #include<cstring> using namespace std; int n, m; string maze[110]; bool vis[110][110]; int dir[4][2] { {0,1},{0,-1},{1,0},{-1,0} }; int ans 100000; bool in(in…

CesiumJS内置三维数字地球,你都不知道效果有多炫酷。

CesiumJS是一个开源的JavaScript库&#xff0c;用于在Web浏览器中创建高性能的3D地球和地理空间应用程序。它提供了强大的工具和API&#xff0c;使开发者能够构建具有交互性、可视化和地理空间分析功能的应用。 以下是CesiumJS的一些主要特点和功能&#xff1a; 3D地球可视化&…

win11 连接海康摄像头 ONVif协议

目录 Win 11 通过脚本打开自带的IE浏览器访问海康摄像头 海康摄像头设置支持onvif协议 安装onvif协议 onvif协议示例代码 Win 11 通过脚本打开自带的IE浏览器访问海康摄像头 第一步、桌面右键新建一个 txt 的文档 第二步、打开文档并且复制粘贴下面代码 CreateObject(&…