爬虫神器!使用Python一键下载网页图片,省时高效!

引言

爬虫技术在当今信息时代中扮演着重要的角色,可以自动化获取互联网上的数据。本教程将围绕你提供的Python爬虫代码展开,旨在实现自动下载图片的功能。通过这个示例,你将学习如何利用爬虫技术批量获取网页中的图片,并将其保存到本地。这项功能的应用广泛,包括数据分析、图像处理、机器学习等领域。通过学习本教程,你将掌握使用Python爬虫技术下载图片的方法,节省时间和劳动力,并为后续应用提供有价值的图片数据支持。接下来,让我们一起深入了解如何实现高效的图片获取吧!

准备工作

该爬虫需要用到工具包 bag和re ,其中bag工具包需要自己实现,这里只介绍爬取图片原理

实现代码

#!/usr/bin/env python3
# coding:utf-8
import bag
import redef main():url = r'https://www.kanxiaojiejie.net/14847/'urls = get_urls(url)for link in urls:get_img(link)def get_urls(url):web.get(url)resp = web.page_sourcepattern = re.compile(r'decoding="async" src="(.*?)"', re.S)urls = re.findall(pattern, resp)return urlsdef get_img(url):try:resp = session.get(url)with open('./img' + '//' + url.split('/')[-1], mode='wb') as file:file.write(resp.content)except Exception as e:print('图片下载异常!', e)if __name__ == '__main__':web = bag.Bag.web_debug()session = bag.session.create_session()session.headers['Referer'] = r'https://www.kanxiaojiejie.net/'main()

通过该代码,我们可以自动获取指定网页中的图片,并保存到本地。

首先,在准备工作部分,代码引入了必要的库和工具。其中,bag是一个自定义的库,用于简化爬虫操作。通过使用bag.Bag.web_debug()bag.session.create_session(),我们创建了一个网页操作对象和一个会话对象,用于访问目标网页并进行图片下载。

接下来,在主函数main()中,我们传入了目标网页的URL,并调用get_urls()函数来获取目标网页中的图片链接。这里使用了正则表达式来抓取链接,具体的正则表达式可以根据实际情况进行调整。

get_urls()函数中,我们使用web.get(url)来访问目标网页,并通过web.page_source获取网页的源代码。然后,使用正则表达式提取图片链接,并将这些链接保存在一个列表中。

接着,在main()函数中的循环中,我们调用get_img()函数来下载每个图片。在get_img()函数中,我们使用会话对象session发送HTTP请求,获取图片的内容,并将其保存到本地。这里需要注意异常处理,如果下载过程中出现异常,会打印出相应的错误信息。

结果展示

结语 

如果你觉得本教程对你有所帮助,不妨点赞并关注我的CSDN账号。我会持续为大家带来更多有趣且实用的教程和资源。谢谢大家的支持!

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

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

相关文章

Python下有关CV的一些算法和函数

目录: 1. HoughCircles二级目录三级目录 1. HoughCircles 霍夫圆检测 二级目录 三级目录

Python轴承故障诊断 (17)基于TCN-CNN并行的一维故障信号识别模型

往期精彩内容: Python-凯斯西储大学(CWRU)轴承数据解读与分类处理 Python轴承故障诊断 (一)短时傅里叶变换STFT Python轴承故障诊断 (二)连续小波变换CWT_pyts 小波变换 故障-CSDN博客 Python轴承故障诊断 (三)经验模态分解EMD_轴承诊断 …

docker 安装minio,详细图解

废话不多说,直接上干货 docker 安装minio 拉取镜像 docker pull minio/minio创建数据目录、配置目录 mkdir /opt/minio/data mkdir /opt/minio/config启动容器 docker run -p 9000:9000 -p 9090:9090 \--name minio \-d --restartalways \-e "MINIO_ACCESS_KE…

[LLM]大语言模型文本生成—解码策略(Top-k Top-p Temperature)

{"top_k": 5,"temperature": 0.8,"num_beams": 1,"top_p": 0.75,"repetition_penalty": 1.5,"max_tokens": 30000,"message": [{"content": "你好","role": "user&…

【递归专题】【蓝桥杯备考训练】:有序分数、正则问题、带分数、约数之和、分形之城【已更新完成】

目录 1、有序分数(usaco training 2.1) 2、正则问题(第八届蓝桥杯省赛C A组 & Java A组) 3、带分数(第四届蓝桥杯省赛Java A组/B组 & C B组/C组) 4、约数之和(《算法竞赛进阶指南》…

图形学 总结 - 老是忘

渲染流水线: 1、首先相机摆放到场景一个位置和角度,场景的各个物体也已经被摆放好 2、拿到场景物体的顶点信息,根据顶点信息构成图元 3、经过透视投影,将图元转化为2*2的正方形,再把2*2的正方形扩展到屏幕大小 4、…

修复 error Delete `␍` prettier/prettier 错误

修复 error Delete ␍ prettier/prettier 错误 问题背景报错信息报错原因解决办法修改CRLF----针对单个文件yarn run lint --fix 一键修复(官方提供) 问题背景 今天在使用 openapi 自动生成前端接口代码的时候,爆了一个类似 eslint 规范的错…

机器人路径规划:基于流场寻路算法(Flow Field Pathfinding)的机器人路径规划(提供Python代码)

流场寻路算法(Flow Field Pathfinding)是一种基于流体动力学理论的路径规划算法,它模拟了流体在空间中的流动,并利用流体的运动特性来指导路径的选择。下面是流场寻路算法的基本介绍及算法描述: 1. 基本介绍 流场寻路算法通过将环境划分为网…

算法导论第十二章练习参考答案(22) - 12.1-12.4

Exercise 12.1-1 任何时候,如果一个节点有一个子节点,就把它当作右子节点,左子节点为NIL。 Exercise 12.1-2 二叉搜索树的属性保证了左子树的所有节点都更小,右子树的所有节点都更大。最小堆属性只保证一般的子节点大于父节点的关…

你在测试金字塔的哪一层(上)

​在准备将软件上线到生产环境之前需要进行测试。随着软件测试方式日趋成熟,软件开发团队的测试也在取代大量手动测试,逐渐实现自动化测试。 通过自动化测试,开发团队可以在短短几分钟内就了解到软件是否存在问题,而不需要等待几天…

航空公司遭遇Play恶意家族攻击,亚信安全发布《勒索家族和勒索事件监控报告》

本周态势快速感知 本周全球共监测到勒索事件95起,与上周相比数量持平。 本周Play是影响最严重的勒索家族,Blacksuit和Ransomhub恶意家族紧随其后,从整体上看lockbit3.0依旧是影响最严重的勒索家族,需要注意防范。 本周大陆航空技…

【鸿蒙HarmonyOS开发笔记】常用组件介绍篇 —— 弹窗组件

简介 弹窗是移动应用中常见的一种用户界面元素,常用于显示一些重要的信息、提示用户进行操作或收集用户输入。ArkTS提供了多种内置的弹窗供开发者使用,除此之外还支持自定义弹窗,来满足各种不同的需求。 下面是所有涉及到的弹窗组件官方文档…

CSS 浮动

浮动 在标准流当中,元素或者标签在页面上摆放的时候会出现不如意的地方。要想解决这些问题可以采用脱离标准流的方式来进行解决这些问题,脱离标准流也称为脱离文档流。 脱离标准流的解决方式有三种,一种是浮动,另外一种是固定定位…

如何读懂磁滞回曲线(磁化曲线、退磁曲线、内禀曲线)

硬磁性材料,如钕铁硼磁钢,有两个显著特征,一是在外磁场作用下能被强烈磁化,另一个是磁滞,即撤走外磁场后硬磁材料仍保留磁化状态,下图为硬磁材料的磁感应强度B与磁化场强度H之间的关系曲线。 当磁场按Hs→H…

算法——贪心

「贪心的本质是选择每一阶段的局部最优,从而达到全局最优」 贪心无套路 1. 分发饼干 贪心策略: (1)局部最优就是大饼干喂给胃口大的,充分利用饼干尺寸喂饱一个,全局最优就是喂饱尽可能多的小孩 &#xff08…

Linux chapter1 常用命令 cp

note 1 : netstat、curl、ip、nmap、dig 这些都是常用的网络诊断工具,它们的全称如下: netstat:Network Statistics,网络统计,用于显示网络连接,路由表,网络接口统计等网络信息。curl&#xf…

Kali Linux 更换优质国内源

文章目录 环境说明1 Kali Linux 源简介2 Kali Linux 更换国内源 环境说明 操作系统:kali-linux-2024.1-installer-amd64 1 Kali Linux 源简介 所谓的 Kali Linux 源,你可以将它理解为软件仓库,系统通过它安装和更新软件;源的服务…

nodeJs 学习

常用快捷键 二、fs模块 回调函数为空,则表示写入成功! 练习 const fs require(fs); fs.readFile(../files/成绩.txt, utf-8, (err, dataStr) > {if (err) {console.log(读取失败);return err;}console.log(读取成功);const arr dataStr.split( )co…

RPC 和 序列化

RPC 1 RPC调用流程 1.1 clerk客户端调用远程服务 Clerk::PutAppend() raftServerRpcUtil::PutAppend() raftServerRpcUtil是client与kvserver通信的入口, 包含kvserver功能的一对一映射:Get/PutAppend,通过stub对象——raftKVRpcProctoc:…

web前端之实现复选功能、repeat

MENU 1、原生实现1.1、html部分1.2、JavaScript部分1.3、css部分1.4、效果图 2、uniApp实现2.1、html部分2.2、JavaScript部分2.3、css部分2.4、效果图 1、原生实现 1.1、html部分 暂时为null,后续会补充。1.2、JavaScript部分 暂时为null,后续会补充…