爬取咚漫漫画

'''一、数据来源分析1.确定自己的需求:采集哪个网站的上面的数据内容正常的访问流程:1.选中漫画--->目录页面 (请求列表页面,获取所有的章节链接)2.选择一个漫画内容--->漫画页面 (请求章节链接,获取所有漫画内容url)3.看漫画内容(保存数据 ,漫画图片内容保存下来)
二、代码实现过程(开发者工具抓包分析)1.查看漫画图片url地址,是什么样子的2.分析url地址在哪里
'''
import requests
import re
import os
index = 0
url = 'https://www.dongmanmanhua.cn/BOY/landuoshaoyedejuexing/list?title_no=2237'  # 某一漫画主页地址
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)
# print(response.text)
chapter_name_list = re.findall('width="77" height="73" alt="(.*?)">',response.text)  # 提取漫画章节名
href_list = re.findall('data-sc-name="PC_detail-page_related-title-list-item".*?href="(.*?)"',response.text,re.S) # 提取章节的url地址
name = re.findall('<title>(.*?)_官方在线漫画阅读-咚漫漫画</title>',response.text)  # 提取漫画名称filename = f'{name}\\'
if not os.path.exists(filename):os.mkdir(filename)         # 创建一个文件夹for chapter_name,href in zip(chapter_name_list,href_list):  # 便利章节url地址列表href = 'https:'+href# print(chapter_name,href)img_data = requests.get(url=href,headers=headers).text   # 获得章节页面代码img_url_list = re.findall('alt="image" class="_images _centerImg" data-url="(.*?)"',img_data) # 得到图片的url地址,单纯访问会遇到403 Forbiddennew_headers = {"Referer":"https://www.dongmanmanhua.cn/","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"}                  # 在访问图片地址前加上refer防盗链for img_url in img_url_list:   # 遍历图片url地址img_content = requests.get(url=img_url,headers=new_headers).contentindex = index+1with open(filename+chapter_name+str(index)+'.jpg',mode='wb') as f:  # 下载图片二进制数据f.write(img_content)

运行结果:

 

总结:

1.获得图片url地址,如果访问遇到403 Forbidden 在下载图片时,要加上防盗链refer

对代码进行改进:

import requests
import re
import osdef get_html(html_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=html_url,headers=headers).textreturn responsedef get_info(response):chapter_name_list = re.findall('width="77" height="73" alt="(.*?)">', response)  # 提取漫画章节名href_list = re.findall('data-sc-name="PC_detail-page_related-title-list-item".*?href="(.*?)"', response,re.S)  # 提取章节的url地址name = re.findall('<title>(.*?)_官方在线漫画阅读-咚漫漫画</title>', response)  # 提取漫画名称return chapter_name_list,href_list,namedef get_img_data(href_list):new_img_url_list = []for href in href_list:href = 'https:'+hrefimg_data = get_html(href)img_url_list = re.findall('alt="image" class="_images _centerImg" data-url="(.*?)"',img_data)  # 得到图片的url地址,单纯访问会遇到403 Forbiddenfor img_url in img_url_list:new_img_url_list.append(img_url)return new_img_url_listdef save(name,img_url_list):filename = f'{name}\\'if not os.path.exists(filename):os.mkdir(filename)index = 0new_headers = {"Referer":"https://www.dongmanmanhua.cn/","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"}  # 在访问图片地址前加上refer防盗链for img_url in img_url_list:img = requests.get(url=img_url,headers=new_headers).contentindex = index+1with open(filename+str(index)+'.jpg',mode='wb') as f:f.write(img)if __name__ == '__main__':response = get_html('https://www.dongmanmanhua.cn/BOY/landuoshaoyedejuexing/list?title_no=2237')chapter_name_list,href_list,name = get_info(response)img_url_list = get_img_data(href_list)save(name,img_url_list)

下载的很慢,怎么写代码让程序运行的更快呢? 

 

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于TriDet的时序动作检测算法训练自己的slowfast数据

最近一直在研究时序动作识别和检测&#xff0c;也一直关注着目前的最新进展&#xff0c;有好的算法&#xff0c;我都会在我自己的数据集上运行看看&#xff0c;一方面是为自己累积相关算法&#xff0c;另一方面也是想看看&#xff0c;目前最新的算法是否可以应用到一些项目上。…

对话顺网科技创始人华勇:建立坚定的AI信仰,从内而外全面拥抱AI

“ 进军AI智算时代的号角已被吹响” 整理 | 梦婕 编辑 | 欣桐 出品&#xff5c;极新 1月18日&#xff0c;顺网科技以“跃迁向未来”为主题的战略升级暨产品升级发布会在杭州圆满召开。顺网科技公布了新战略——“立足算力&#xff0c;聚焦AI”&#xff0c;并揭晓了全新的品…

arcgis 面要素shp数据处理

面要素是工作中用到最多的&#xff0c;那么面要素是如何形成的呢&#xff0c;主要还是由闭合的线要素转换而成。在面要素数据中常用的有以下几点&#xff1a; 一、 线转面&#xff08;要素转面&#xff09; 通过上一篇得到了点转线的要素&#xff0c;那么根据上节的线要素&am…

系统移植 day2 bootloader->u-boot 移植

一、栈的复习 1、满栈&#xff1a;当堆栈指针SP总是指向最后压入堆栈的数据&#xff0c;称为满栈&#xff1b; 2、空栈&#xff1a;当堆栈指针SP总是指向下一个将要放入数据的空位置&#xff0c;称为空栈&#xff1b; 满栈状态下&#xff0c;先移动指针&#xff0c;后赋值. 空…

Unity中UGUI在Mask剪裁粒子特效的实现

在Unity使用Mask是剪裁不了粒子特效的&#xff0c;之前有想过RenderTexture来实现&#xff0c;不过使用RenderTexture不适合用于很多个特效&#xff0c;因为RenderTexture依赖Camera的照射&#xff0c;如果在背包中每种道具都有不同的特效&#xff0c;那使用RenderTexture则需要…

VPN的基本原理以及配置

实验如上图所示&#xff1a; 首先给各个设备配置IP地址 其次再给r1和r5做pap认证 给r2和r5做chap认证 r5上的配置如下图所示&#xff1a; r3和r5之间用hdlc进行封装&#xff1a; r5: 给r1&#xff0c;r2&#xff0c;r3配置MGRE&#xff1a;使得可以通过VPN技术进行通讯&#…

ESXI 本地和虚拟机之间可以自由复制和粘贴

文章目录 ESXI 本地和虚拟机之间可以自由复制和粘贴 ESXI 本地和虚拟机之间可以自由复制和粘贴 web访问esxi&#xff0c;然后&#xff1a; 1、右击新建的虚拟机&#xff0c;确保是在关机状态下&#xff0c;点击编辑设置 2. 找到 虚拟机选项→高级→常规→配置参数 3、点击添加…

【强化学习】QAC、A2C、A3C学习笔记

强化学习算法&#xff1a;QAC vs A2C vs A3C 引言 经典的REINFORCE算法为我们提供了一种直接优化策略的方式&#xff0c;它通过梯度上升方法来寻找最优策略。然而&#xff0c;REINFORCE算法也有其局限性&#xff0c;采样效率低、高方差、收敛性差、难以处理高维离散空间。 为…

ansible 常用模块

目录 1.ping模块 2.command模块 3. shell模块 4.copy模块 5.file模块 6.fetch模块 7.cron模块 8.yum模块 9.service模块 10.user模块 11.group模块 12.script 模块 13.setup模块 14. get_url模块 15.stat模块 16.unarchive模块 1.ping模块 使用ansible db1 -m pin…

前端echarts图形报表常见的样式配置

文章目录 &#x1f412;个人主页&#x1f3c5;Vue项目常用组件模板仓库&#x1f4d6;前言&#xff1a;&#x1f415;1.深色主题&#x1f415;2.改变柱状图颜色&#x1f415;突然发现去问ai&#xff0c;更容易理解&#xff0c;那就不总结了 &#x1f412;个人主页 &#x1f3c5;…

精通 VS 调试技巧,学习与工作效率翻倍!

​ ✨✨ 欢迎大家来到贝蒂大讲堂✨✨ ​ &#x1f388;&#x1f388;养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; ​ 所属专栏&#xff1a;C语言学习 ​ 贝蒂的主页&#xff1a;Betty‘s blog 1. 什么是调试 当我们写代码时候常常会遇见输出结果不符合我们预…

【C++】命名空间详解

目录 前言 命名空间的定义 命名空间的使用 前言 在C/C中&#xff0c;变量、函数和后面要学到的类都是大量存在的&#xff0c;这些变量、函数和类的名称将都存 在于全局作用域中&#xff0c;可能会导致很多冲突。使用命名空间的目的是对标识符的名称进行本地化&#xff0c; 以…