#私藏项目实操分享#Python爬虫实战,requests模块,Python实现爬取网站漫画

python网络爬虫最细致讲解之漫画抓取【细!!!】 漫画抓取:python网络爬虫与html对应结合抓取讲解 文章目录漫画抓取:python网络爬虫与html对应结合抓取讲解前言一、实现目的二、开始旅程1.明确思路2.下载网页3.寻找下载漫画4.完整代码附上5.运行结果附上三、总结 前言 本次以漫画抓取为例,来一步一步结合浏览器后台与爬虫编程讲解,也可以延伸到应对其他不同的网页抓取 一、实现目的 首先说明一下本次抓取的网站:XKCD, 是一个流行的极客漫画网站。 首页url:http://xkcd.com/ 但是其中的重点在于:它有一个“Prev 阅读详情

前言

今天带大家爬取爬取网站漫画,废话不多说,直接开始~

开发工具

Python版本:3.6.4

相关模块:

requests模块;

re模块;

shutil模块;

以及一些Python自带的模块。

环境搭建

安装Python并添加到环境变量,pip安装需要的相关模块即可。

思路分析

漫画其实是一张一张图片来着,所以我们先找到这些图片的链接在哪里!因为本文是为了实现想看什么漫画就爬取什么漫画,所以搜索任一漫画,这里以神印王座为例,然后点进去进入详情页查看任一话;在浏览页中,网页源代码是没有我们需要的数据,所以需要打开开发者工具进行抓包,最终成功找到图片的链接。

找到图片链接后,接着就要想办法从该数据包中获取,也就是访问该数据包的链接,从数据包中提取图片链接。通过多页的数据包,观察以下数据包链接,发现 chapter_newid 每次翻页会发生变化的, comic_id 是一本漫画的唯一标识。

https://www.kanman.com/api/getchapterinfov2?product_id=1&productname=kmh&platformname=pc&comic_id=5323&chapter_newid=1006&isWebp=1&quality=middle\
https://www.kanman.com/api/getchapterinfov2?product_id=1&productname=kmh&platformname=pc&comic_id=5323&chapter_newid=2003&isWebp=1&quality=middle\
https://www.kanman.com/api/getchapterinfov2?product_id=1&productname=kmh&platformname=pc&comic_id=5323&chapter_newid=3004&isWebp=1&quality=middle

接着查找这两个参数是从哪里来的。进入首页搜索神印王座,接着查看网页源代码,发现可以在网页源代码中找到进入漫画详情页的url;我试着用正则表达式和xpath语法进行提取时,发现困难重重,源代码中的HTML标签有很多的都相同的,且发现源代码中不止一本漫画。

接着我试着搜索其它漫画,发现源代码中没有,我才发现我掉坑里,后来发现该源代码是网站首页的源代码,大意了,泪目!但没关系,源代码中没有,我们去抓包。

打开开发者工具,进入Network中的XHR,搜索神印王座,第一次搜索的时候抓到一条数据包,不过他报红了:

但里面是有我们需要的内容的。不过因为报红,我们在开发者工具中是无法看到数据的,得点开数据包:

如果需要获取不报红的数据包,需要重新点击一下输入框,他就会加载出来了,如果只刷新网页和重新点击搜索他都是无法获取到的。

拿到数据包后,我们找到漫画的唯一标识 comic_id ,只需要该数据包中提取出来:

找到 comic_id 后,接着找 chapter_newid 。 chapter_newid 变化规律每本漫画他都是不同的;但如果你第一次搜索的是斗罗大陆,你会发现, chapter_newid 他是递增式变化的。

那 chapter_newid 怎么找呢,进入到漫画的详情页,前面我们知道神印王座的第一话的 chapter_newid 是 1006 ,那我们直接在开发者工具中搜索1006,最终在详情页源代码中找到:

那么我们知道,首个 chapter_newid 是详情页静态加载来的,可以在详情页的源代码中提取出来,而该网址是 https://www.kanman.com/ + comic_id 构成的:

这里只要第一话的 chapter_newid ,那其它的从哪里得到呢?经过我的查找,发现后一页的 chapter_newid 是在前一页中获取到的:

代码实现

构建提取 comic_id 和 chapter_id 函数:

def get_comic(url):\
    data = get_response(url).json()['data']\
    for i in data:\
        comic_id = i['comic_id']\
        chapter_newid_url = f'https://www.kanman.com/{comic_id}/'\
        chapter_newid_html = get_response(chapter_newid_url).text\
        chapter_id = re.findall('{"chapter_id":"(.*?)"}', chapter_newid_html)\
        data_html(comic_id, chapter_id[0])

关键代码,如果以前爬取过微博评论数据的,就会发现,二者的套路差不多,翻页的数值都需要从前一页中获取:

def data_html(comic_id, chapter_id):\
    try:\
        a = 1\
        while True:    # 循环获取chapter_id\
            if a == 1:\
                comic_url = f'https://www.kanman.com/api/getchapterinfov2?product_id=1&productname=kmh&platformname=pc&comic_id={comic_id}&chapter_newid={chapter_id}&isWebp=1&quality=middle'\
            else:\
                comic_url = f'https://www.kanman.com/api/getchapterinfov2?product_id=1&productname=kmh&platformname=pc&comic_id={comic_id}&chapter_newid={chapter_newid}&isWebp=1&quality=middle'\
            comic_htmls = get_response(comic_url).text\
            comic_html_jsons = json.loads(comic_htmls)\
            if a == 1:\
                chapter_newid = jsonpath.jsonpath(comic_html_jsons, '$..chapter_newid')[1]\
            else:    # 自第二条url开始,提取规则+1\
                chapter_newid = jsonpath.jsonpath(comic_html_jsons, '$..chapter_newid')[2]\
            current_chapter = jsonpath.jsonpath(comic_html_jsons, '$..current_chapter')\
            for img_and_name in current_chapter:\
                image_url = jsonpath.jsonpath(img_and_name, '$..chapter_img_list')[0]    # 图片url\
                # chapter_name 中存在空格,所以需要用strip去除\
                chapter_name = jsonpath.jsonpath(img_and_name, '$..chapter_name')[0].strip()\
                save(image_url, chapter_name)\
            a += 1\
    except IndexError:\
        pass

保存数据:

def save(image_url, chapter_name):\
    for link_url in image_url:    # 图片名称\
        image_name = ''.join(re.findall('/(\d+.jpg)-kmh', str(link_url)))\
        image_path = data_path + chapter_name\
        if not os.path.exists(image_path):    # 创建章节标题文件夹\
            os.mkdir(image_path)\
        image_content = get_response(link_url).content\
        filename = '{}/{}'.format(image_path, image_name)\
        with open(filename, mode='wb') as f:\
            f.write(image_content)\
            print(image_name)\
    get_img(chapter_name)    # 拼接函数章节标题,非必需

控制台:

if __name__ == '__main__':\
    key = input('请输入你要下载的漫画:')\
    data_path = r'D:/数据小刀/爬虫④/漫画/{}/'.format(key)\
    if not os.path.exists(data_path):    # 根据用户输入的漫画名称创建文件夹\
        os.mkdir(data_path)    \
    url = f'https://www.kanman.com/api/getsortlist/?search_key={key}'   # 该url由去除不必要的参数得到\
    get_comic(url)

保存的数据展示

Python爬虫,爬取快看漫画每日更新模块 根据基本的爬虫知识,爬取快看漫画每日更新模块的漫画名,该漫画的描述和相对应的封面图片。一、爬虫是什么?爬虫是通过编写程序,模拟浏览器上网,然后让其去互联网上抓取数据的过程。 阅读详情

相关推荐

用python爬取漫画!

Hi~ 大家好! 今日教大家用Python爬取某网站的全部漫画,让你想看什么漫画就看什么漫画!本文代码量有的多,请耐心看完!如果不想看分析网页,可拉取到爬取思路和实现代码区域,查看基本思路和代码!经过作者测试,测试过的漫画都可以下载!本文图片以及文本仅供学习、交流使用,要想获得更好的体验,请支持正版! 本文完整代码见文末! 分析网页 受害者: https://www.kanman.com/sort/ 漫画其实是一张一张图片来着,所以我们先找到这些图片的链接在哪里!因为本文是为了实现想看什么漫画就爬取什么漫

weixin_49669074的博客 6182

关于用python爬虫白嫖漫画这档子事

python使用selenium和requests爬取漫画

qq_35754154的博客 2796

使用Python爬取网页上的漫画是一项有趣而有挑战性的任务

在本文中,我将展示一个使用Python编写的简短代码示例,帮助您将特定网站上的漫画爬取到本地。请注意,根据不同的网站结构和法律要求,未经授权爬取网站内容可能涉及法律风险,请确保您遵守适用的法律规定。请注意,这只是一个简单的示例代码,用于演示基本的爬取网页漫画的过程。实际的网站结构和爬取需求可能会有所不同,您需要根据具体情况进行适当的修改和调整。在编写和运行爬虫代码之前,请确保您了解并遵守相关网站的使用条款和法律规定,以免触犯法律或侵犯他人的权益。一旦我们安装好所需的库,我们就可以开始编写我们的爬虫代码了。

CyberNerdX的博客 291

Python爬取腾讯动漫全站漫画详细教程(附带源码)

前言 本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。 作者:merlin& 操作环境 编译器:pycharm社区版 python 版本:anaconda python3.7.4 浏览器选择:Google浏览器 需要用到的第三方模块:requests , lxml , selenium , time , bs4,os 网页分析 明确目标 首先我们打开腾讯动漫首页,分析要抓取的目标漫画。 找到腾讯动漫的漫画目录页,简单看了一

人生苦短, 还不用Python? 1万+

深入解析经典蓝牙连接:从HCI命令到LMP协议的完整流程

本文深入解析经典蓝牙连接的完整流程,从设备发现、寻呼建立物理链路,到安全配对与加密的每一步。通过对照HCI LOG与AIR LOG,详细拆解了HCI命令与LMP协议报文的对应关系,帮助开发者精准定位连接问题,掌握蓝牙调试的核心方法。

weixin_29260291的博客 455

【Cadence】Virtuoso@LayoutXL 差分电路版图同步修改

对于差分电路,器件和部分走线通常是对称的,只需要画一半,另一半通过镜像操作完成。因此,需要对差分电路进行同步的修改,保证电路的差分对称性和正确的连接关系。然而,通常版图会经过多次修改,修改的部分可能在镜像的时候被遗漏。左边画了金属块,右边也出现了同步出现了金属块。进入group会有同步复制的提示。

乾巽的博客 3050

爬虫实战--- (5) Python漫画爬虫教程

本文我们从 漫画网站上爬取漫画数据。通过这个项目,我们将深入了解网页爬虫的工作原理,学习如何使用Python高效地处理网络请求和数据解析。

qq_51749909的博客 2193

STM32F407ZGT6最小系统:从原理图到PCB的实战设计与避坑指南

本文详细介绍了STM32F407ZGT6最小系统的设计与实现,从原理图到PCB布局的完整流程。重点解析了电源、时钟、复位和调试接口等核心模块的设计要点,提供了实用的PCB布局技巧和常见问题解决方案,帮助开发者避开设计陷阱,快速完成稳定可靠的STM32F407ZGT6最小系统设计。

weixin_30955617的博客 198

Python爬虫-漫画柜漫画爬取

代码仅供学习 from selenium import webdriver from lxml import etree import time import random import requests import os def download_pic(urls,name): i = 1 os.mkdir(fr'C:\Users\msi\Desktop\爬取图片\{name}') #修改储存地址 for url in urls: headers = {'R

Father_of_Python的博客 1954

银河麒麟V10离线安装VLC播放器:依赖处理与3.0.9.2版本实操指南

在国产化操作系统日益普及的背景下,软件安装方式成为政企内网用户关注的重点。离线安装作为一种不依赖公网源的部署手段,常用于解决内网环境下的软件获取问题。其核心在于理解Linux包管理机制,如dpkg与apt对依赖关系的处理逻辑。掌握这一原理,不仅能应对多媒体软件的部署,也能提升系统维护效率。VLC作为跨平台多媒体播放器,凭借强大的解码能力与协议支持,广泛应用于本地视频播放、RTSP拉流及监控大屏等场景。本文从离线安装的通用概念出发,结合银河麒麟V10桌面版的实际环境,详细梳理了VLC 3.0.9.2离线包的获

weixin_32247165的博客 370

RGB接口电容触摸屏驱动(二)接口与时序说明

RGB接口电容触摸屏驱动(二)接口与时序说明

杰克拉力船长个人博客 4920

Python爬虫:用Scrapy框架爬取漫画

Python崛起并且风靡,因为优点多、应用领域广、被大牛们认可。学习 Python 门槛很低,但它的晋级路线很多,通过它你能进入机器学习、数据挖掘、大数据,CS等更加高级的领域。Python可以做网络应用,可以做科学计算,数据分析,可以做网络爬虫,可以做机器学习、自然语言处理、可以写游戏、可以做桌面应用…Python可以做的很多,你需要学好基础,再选择明确的方向。这里给大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

m0_61549674的博客 1953

Python全栈入门到实战【JavaScript篇 15】async/await与Fetch API,打通前后端数据通道

Fetch API是浏览器内置的现代HTTP请求接口,用于向服务器发送请求并获取响应。它是(XHR)的替代品。学习Fetch的目标非常明确——用JS从后端API获取数据,并渲染到前端页面。这标志着前后端数据通道的打通,是实现全栈开发的核心技能。try {// 等待Promiseconst parallel = await Promise.all([ // 并行等待]);

那些看似不起波澜的日复一日,会在某天让你看到坚持的意义 1981

超全汇总!小白必看 Python 标准库介绍!!

文本二进制数据数据类型数学函数式编程文件与目录持久化压缩文件格式化加密操作系统工具并发进程间通信。

zhishi0000的博客 1530

神经影像和人类基因组关联分析的实践过程

现代全脑转录图谱为研究脑组织的分子相关性提供了前所未有的机会,可以使用无创神经成像进行量化。然而,将神经影像学数据与转录组测量相结合并不是直截了当的,需要仔细考虑才能做出有效的推断。在本文中,我们回顾了最近的研究工作,探讨了不同的方法选择如何影响成像转录组学分析的三个主要阶段,包括1)转录图谱数据的处理;2)将转录测量与独立衍生的神经影像学表型相关联;3)通过基因富集分析评估鉴定的关联的功能意义。我们的目标是为这个快速发展的领域促进标准化和可复制方法的发展。

从事脑科学核磁共振方法学研究,在Nature communications等权威期刊发表研究论文,熟练掌握磁共振处理方法和统计学方法,欢迎大家和我交流。 2201

30.Labview如何读懂别人程序、修改程序?

之前写过一次教大家的文章,这次教大家如何学习别人的程序,和如何搭建一套适合自己的程序框架。这里事先说明一下:要想搭好程序框架,一定要先把自己的系统,逻辑是什么!这非常重要,是决定你程序的关键因素。废话不多扯,直接说重点。

关注我,更多技术问题欢迎私聊~ 2447

python爬虫爬取漫画(仅供学习)

项目名: crawl_chuanwu 爬取链接:https://www.manhuadui.com/manhua/chuanwu/ 声明:本项目无任何盈利目的,仅供学习使用,也不会对网站运行造成负担。 1. 打开链接后,我们会看到这样的图片 3. 每个章节都是一个link,我们需要获得这些链接,直接右击检查网页源代码,我们能找到每个章节的url,很幸运,这个不是动态网页(ajax:异步 Jav...

qq_38786335的博客 1万+

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

python爬取漫画

python爬取漫画“正后方的神威” 在QQ看点上看到的一部漫画,正好最近对爬虫比较感兴趣,还没处理过图片的下载,所以想试一下。废话不多说,直接上源码: import os,base64 import requests import re from PIL import Image from io import BytesIO # 第一话漫画地址 url = "https://rimanb.com/chapter/54717" # 图片编号 i=1 # 得到网页源码 req = req

weixin_45826090的博客 1646

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Python爬取漫画(详细教程)

最后这里给大家免费分享一份Python学习资料,包含了视频、源码、课件,希望能够帮助到那些不满现状,想提示自己却又没用方向的朋友,也可以和我一起来交流呀!(3)、找到加载网页的源码文件,点击Headers,如下图: Status Code表示网页返回的代码,值为200时表示访问成功。(5)、将html代码存入 data 中,xpath定位每一章链接。(2)、按F12打开此网页的源码(谷歌浏览器),选中上方NetWork,Ctrl+R刷新。编辑资料、学习路线图、源代码、软件安装包等!

Python_trys的博客 2047

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

《【AI实战】用Python搭建个人知识库:3种方案对比+完整代码》

本文介绍了三种使用Python搭建个人知识库的方案:本地SQLite方案适合注重隐私的技术用户,提供完整的数据库操作代码;云端Notion方案支持多设备同步,通过API实现知识管理;第三种方案(未展示完整)可能涉及更高级的技术。文章包含可运行的Python代码示例,帮助读者根据需求选择最适合的方案,解决信息过载和知识管理难题,提升工作效率。

weixin_41015620的博客 507

终于把所有的Python库,都整理出来啦!

今天给大家总结整理了1000+常用Python库,主要分为以下几个部分👇。

weixin_72959097的博客 5539

【新手入门Python必看】1000+常用Python库一览,从零基础到精通,收藏这篇就够了1

这次给大家总结整理了1000+常用Python库,主要分为以下部分👇文本处理、文件处理、图像处理、游戏和多媒体、大数据和科学计算、人工智能和机器学习、系统与命令行、数据库、网络、web框架、安全、封装、代码调试。

Javachichi的博客 1861

Python25个常用模块简介

恭喜你,已经完成了Python常用模块的探险之旅!每个模块都如同一块拼图,当你将它们熟练运用到实际项目中,便能构建出强大而优雅的Python应用。动手实践:阅读本文的同时,打开Python环境尝试运行示例代码,理解其工作原理。深入学习:查阅官方文档或相关教程,了解模块中未提及的其他功能和用法。结合项目:在实际项目中寻找机会应用所学模块,解决具体问题,提升实战经验。定期回顾:定期复习模块知识,更新自己的技能库,保持对Python生态的敏感度。编程之路永无止境,持续学习与实践是进步的关键。

wenjie20070212的博客 2377

【python教程入门学习】把Python的200个标准库分类整理了下,供参考_python标准库学习

Python有一套很有用的标准库(standard library),会随着Python解释器一起安装在你的电脑中的。它是Python的一个组成部分,不需要额外安装即可直接调用。这些标准库是Python为你准备好的利器,可以让编程事半功倍。文本string:通用字符串操作re:正则表达式操作difflib:差异计算工具textwrap:文本填充unicodedata:Unicode字符数据库stringprep:互联网字符串准备工具readline:GNU按行读取接口。

2401_84586779的博客 2975

从入门到精通,收下这 22 个 Python 学习网站

从入门到精通,收下这 22 个 Python 学习网站

Python单行客的博客 3181
上一篇: Python enumerate():使用计数器简化循环
下一篇: 用Python爬了微信好友,原来他们是这样的人...
Python_xiaowu
博客等级 码龄5年 3096粉丝 178原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值