Python爬虫速成之路(3):下载图片

news2024/9/23 21:20:51

 hello hello~ ,这里是绝命Coding——老白~💖💖 ,欢迎大家点赞🥳🥳关注💥💥收藏🌹🌹🌹
19d95742d45b4220ad0ae0359ffcba93.png

💥个人主页:绝命Coding-CSDN博客
💥 所属专栏:后端技术分享
这里将会不定期更新有关后端、前端的内容,希望大家多多点赞关注收藏💖

 历史文章:

Python爬虫速成之路(1):获取网页源代码-CSDN博客

Python爬虫之路(2):爬天气情况-CSDN博客

 

教程:使用Python下载网页中的图片

在本教程中,我们将学习如何使用Python来下载网页中的图片。使用Python进行网页图片下载可以非常方便,只需要几行代码即可完成任务。

首先,我们需要导入所需的Python库,即urllib.requestos。这两个库分别用于发起HTTP请求和处理文件目录。

接下来,我们需要指定想要下载的网页地址,可以是任何包含图片的网页。

然后,我们需要指定图片下载的保存路径,也就是imgPath变量。你可以根据自己的需要修改保存路径。

在代码中,我们使用urllib.request.urlopen()方法打开指定的网页,并使用.read().decode('utf-8')方法对网页内容进行读取和解码。然后,我们使用正则表达式re.findall()方法查找网页中的图片链接。

接着,我们使用os.mkdir()方法创建图片保存的文件夹。

接下来,我们使用一个循环遍历所有的图片链接,并通过urllib.request.urlopen()方法下载每张图片。如果下载成功,就将其保存到指定的文件夹中。

#Python3下载网页中的图片 - Lavi的专栏 - CSDN博客  http://blog.csdn.net/liuweiyuxiang/article/details/52750367
# 教程    利用Python实现从百度下载图片到本地磁盘 - 森语音 - 博客园  https://www.cnblogs.com/593213556wuyubao/p/4972305.html
import urllib.request
import os
import re
#暴走_百度图片搜索  http://image.baidu.com/search/index?tn=baiduimage&ipn=r&ct=201326592&cl=2&lm=-1&st=-1&fm=result&fr=&sf=1&fmq=1513512946231_R&pv=&ic=0&nc=1&z=&se=1&showtab=0&fb=0&width=&height=&face=0&istype=2&ie=utf-8&word=%E6%9A%B4%E8%B5%B0
url = r'http://image.baidu.com/search/index?tn=baiduimage&ipn=r&ct=201326592&cl=2&lm=-1&st=-1&fm=result&fr=&sf=1&fmq=1513512946231_R&pv=&ic=0&nc=1&z=&se=1&showtab=0&fb=0&width=&height=&face=0&istype=2&ie=utf-8&word=%E6%9A%B4%E8%B5%B0'

imgPath = r'F:\img'

imgHtml = urllib.request.urlopen(url).read().decode('utf-8')
# test html
# print(imgHtml)
urls = re.findall(r'"objURL":"(.*?)"', imgHtml)

if not os.path.isdir(imgPath):
    os.mkdir(imgPath)

index = 1
for url in urls:
    print("下载:", url)

    # 未能正确获得网页 就进行异常处理

    try:

        res = urllib.request.urlopen(url)

        if str(res.status) != '200':
            print('未下载成功:', url)
            continue
    except Exception as e:
        print('未下载成功:', url)

    filename = os.path.join(imgPath, str(index) + '.jpg')
    with open(filename, 'wb') as f:
        f.write(res.read())
        print('下载完成\n')
        index += 1
print("下载结束,一共下载了 %s 张图片" % (index - 1))

其实下载图片的本质就是创建一个对应文件,然后将数据写入 

import urllib.request  
import os  
#下面是想要下载图片的地址  
url = r'https://bkimg.cdn.bcebos.com/pic/a2cc7cd98d1001e952722fb2ba0e7bec55e797c4?x-bce-process=image/watermark,image\_d2F0ZXIvYmFpa2UxNTA=,g\_7,xp\_5,yp\_5'  
#imgPath = r'/home/JueMingCoding/视频'          #Linux路径  
imgPath = r'C:\\py'  
  
if not os.path.isdir(imgPath):  # 如果不存在这个目录,则创建这个目录  
 os.mkdir(imgPath)  
  
# 未能正确获得网页 就进行异常处理  
try:  
    res = urllib.request.urlopen(url)  
    if str(res.status) != '200':            #状态不对  
 print('未下载成功:', url)  
except Exception as e:  
    print('未下载成功:', url)  
filename = os.path.join(imgPath, '暴走.jpg')      #创建  
with open(filename, 'wb') as f:  
    f.write(res.read())     #写入数据  
 print('下载完成\n')

使用requests(优化,简洁版)

import requests
import os  
#下面是想要下载图片的地址  
url = r'https://bkimg.cdn.bcebos.com/pic/a2cc7cd98d1001e952722fb2ba0e7bec55e3.下载图片797c4?x-bce-process=image/watermark,image\_d2F0ZXIvYmFpa2UxNTA=,g\_7,xp\_5,yp\_5'  
#imgPath = r'/home/JueMing/视频'          #Linux路径  
imgPath = r'C:\\py'  
  
if not os.path.isdir(imgPath):  # 如果不存在这个目录,则创建这个目录  
 os.mkdir(imgPath)  
  
# 未能正确获得网页 就进行异常处理  
try:  
    res = requests.get(url)  
    if str(res.status) != '200':            #状态不对  
 print('未下载成功:', url)  
except Exception as e:  
    print('未下载成功:', url)  
filename = os.path.join(imgPath, '暴走.jpg')      #创建  
with open(filename, 'wb') as f:  
    f.write(res.content)     #写入数据  
 print('下载完成\n')

 更多精彩内容请关注:绝命Coding

914cbb12b2c3492aaa31232a11aa9c64.png

 

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

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

相关文章

[GXYCTF2019]BabySQli

原题目描述:刚学完sqli,我才知道万能口令这么危险,还好我进行了防护,还用md5哈希了密码! 我看到是个黑盒先想着搞一份源码 我dirsearch明明扫到了.git,算了直接注入试试看 随便输入了两个东西&#xff0c…

pico+unity3d项目配置

重点:unity编辑器版本要和pico的sdk要求一致、比如: 对于 Unity 2022.1.14 及以上版本,若同时在项目中使用 URP、Linear 色彩空间、四倍抗锯齿和OpenGL,会出现崩溃。该问题待 Unity 引擎解决。对于 Unity 2022,若同时…

植物神经紊乱?别怕!这些维生素来帮你!

最近收到好多小伙伴的私信,说自己有植物神经紊乱的困扰,不知道该肿么办?别急别急,我给你们来一波大福利🎁!今天就来聊聊植物神经紊乱患者应该补充哪些维生素,让你的身体重回最佳状态&#xff01…

SC.Pandas 03 | 如何使用Pandas分析时间序列数据?

Introduction 前两期我们对Pandas的数据结构和常用的计算方法进行了介绍,在地球科学领域时间序列分析是很重要的一种数据处理方式。 通过理解数据的时间变化特征,我们可以更深入地理解研究对象的演化规律与物理机制。 因此,本期我们就从Pa…

安装cnpm失败

20240714 安装cnpm失败,报错如下: 失败原因: 请求 https://registry.npm.taobao.org 失败,原因:证书已过期 使用以下命令: npm install -g cnpm --registryhttps://registry.npmmirror.com另外&#xff0…

1.33、激活可视化卷积神经网络(matalb)

1、激活可视化卷积神经网络原理及流程 激活可视化(Activation Visualization)指的是通过可视化神经网络中激活函数的输出,来理解神经网络是如何学习并提取特征的过程。在卷积神经网络(CNN)中,我们可以通过…

【ROS2】中级:RViz-构建自定义 RViz 显示

背景 在 RViz 中有许多类型的数据已经有现有的可视化。然而,如果有一种消息类型尚未有插件来显示它,那么有两种选择可以在 RViz 中查看它。 将消息转换为另一种类型,例如 visualization_msgs/Marker 。编写自定义 RViz 显示。 使用第一个选项…

成为CMake砖家(5): VSCode CMake Tools 插件基本使用

大家好,我是白鱼。 之前提到过,白鱼的主力 编辑器/IDE 是 VSCode, 也提到过使用 CMake Language Support 搭配 dotnet 执行 CMakeLists.txt 语法高亮。 对于阅读 CMakeLists.txt 脚本, 这足够了。 而在 C/C 开发过程中&#xff…

数据结构(单链表(2))

单链表的实现 SList.h 由于代码中已有大量注释&#xff0c;所以该文章主要起到补充说明作用。 &#xfeff;#pragma once #include<stdio.h> #include<stdlib.h> #include<assert.h>//定义链表&#xff08;结点&#xff09;的结构typedef int SLTDataType…

MySQL in 太多过慢的 3 种解决方案

文章目录 解决方案一&#xff1a;使用 JOIN 替代 IN示例&#xff1a; 解决方案二&#xff1a;分批处理 IN 子句示例&#xff1a; 解决方案三&#xff1a;使用临时表示例&#xff1a; 总结 &#x1f389;欢迎来到Java学习路线专栏~探索Java中的静态变量与实例变量 ☆* o(≧▽≦)…

力扣刷题之978.最长湍流子数组

题干要求&#xff1a; 给定一个整数数组 arr &#xff0c;返回 arr 的 最大湍流子数组的长度 。 如果比较符号在子数组中的每个相邻元素对之间翻转&#xff0c;则该子数组是 湍流子数组 。 更正式地来说&#xff0c;当 arr 的子数组 A[i], A[i1], ..., A[j] 满足仅满足下列条…

基于用户鼠标移动的规律可以对用户身份进行连续验证的方法

概述 论文地址&#xff1a;https://arxiv.org/abs/2403.03828 本文重点论述了高效可靠的用户身份验证方法在计算机安全领域的重要性。它研究了使用鼠标移动动态作为连续身份验证新方法的可能性。具体来说&#xff0c;本文分析了用户在两个不同游戏场景–团队要塞和聚能桥–中…

关于Kafka Topic分区和Replication分配的策略

文章目录 1. Topic多分区2. 理想的策略3. 实际的策略4. 如何自定义策略 1. Topic多分区 如图&#xff0c;是一个多分区Topic在Kafka集群中可能得分配情况。 P0-RL代表分区0&#xff0c;Leader副本。 这个Topic是3分区2副本的配置。分区尽量均匀分在不同的Broker上&#xff0c…

自动驾驶-2D目标检测

yolo及yolo的变体 anchor boxes (锚框) intersection over union 并集交集 用于计算两个边界框的差异程度 bounding box predictions 边界框预测 non maximum suppression非极大值抑制 为了分离这些边界框并为每个对象获得单个边界框&#xff0c;我们使用IOU。这种获取单…

Ubuntu 安装 XRDP,替代系统自带RDP远程桌面

起因&#xff0c;Ubuntu的自带RDP远程桌面很好用&#xff0c;但很傻卵&#xff0c;必须登录。 而设置了自动登录也不能解开KEYRING&#xff0c;必须必须必须用GUI手动登录。 &#xff08;我远程我用头给你坐机子面前开显示器先登录&#xff1f;&#xff1f;&#xff09; 比起VN…

vue3 快速入门 (二) : 实现第一个Vue网页,并在手机上浏览

1. 最简单的一个VUE网页 首先&#xff0c;我们可以看我的这篇文章 : vue3 快速入门 (一) : 环境配置与搭建 完成环境搭建。 接着就可以来实现我们的第一个Vue网页了。 本文环境 Vue版本 : 3.4.29Node.js版本 : v20.15.0系统 : Windows11 64位IDE : VsCode 1.1 基础模板 vu…

使用OpenCV寻找图像中的轮廓

引言 OpenCV&#xff08;Open Source Computer Vision Library&#xff09;是一个开源的计算机视觉和机器学习软件库。它提供了大量的视觉处理功能&#xff0c;包括图像和视频捕获、特征检测与匹配、图像变换、图像分割、颜色空间转换等。在图像处理中&#xff0c;寻找图像中的…

Gocator Acquisition for Cognex VisionPro(LMI相机图像获取)

概述 VisionPro 是个很强大的视觉软件, 我们很乐意我们的客户在VisionPro 环境中使用Gocator产品。 实现方法 在 VisionPro 环境下配置 Gocator 产品两种方法: ● 方法一: 创建一个 QuickBuild Job,在 Job 编辑器添加 Job Script,插入 Gocator 的 SDK,编辑简 单脚本就 OK。 …

基于MATHCAD的傅里叶级数模拟和方波图像绘制

一、MATHCAD软件简介 MATHCAD是一款功能强大的数学计算软件&#xff0c;它允许用户以类似手写公式的方式输入数学表达式&#xff0c;并即时显示计算结果和图形。在工程研究和学术写作的世界里&#xff0c;MathCAD以其强大的符号运算能力和直观的数学书写体验脱颖而出。MATHCAD…

防火墙nat基础实验

一&#xff0c;实验拓扑&#xff1a; 二&#xff0c;实验需求&#xff1a; 1&#xff0c;办公区设备可以通过电信链路和移动链路上网(多对多的NAT&#xff0c;并且需要保留一个公网IP不能用来转换) 2&#xff0c;分公司设备可以通过总公司的移动链路和电信链路访问到Dmz区的ht…