当前位置: 首页 > news >正文

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

 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)continueexcept 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

 

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【常见开源库的二次开发】基于openssl的加密与解密——Base的编解码(二进制转ascll)(二)
  • 1219:马走日
  • STM32 不同时钟频率有什么不同的影响
  • 云计算实训室的核心功能有哪些?
  • Xcode 16 beta3 真机调试找不到 Apple Watch 的尝试解决
  • 人工智能算法工程师(中级)课程12-PyTorch神经网络之LSTM和GRU网络与代码详解1
  • BL201分布式I/O耦合器连接Profinet网络
  • Win11鼠标卡顿 - 解决方案
  • [word] word表格跨页断开实现教程 #职场发展#媒体
  • pycharm如何debug for循环里面的错误值
  • COD论文学习 ZoomNext
  • SAP ABAP性能优化
  • 输出调节求解跟踪问题(二阶线性系统)
  • 机器人产业发展格局多元化,创业公司突破瓶颈需多维施策
  • django中日志模块logging的配置和使用
  • [iOS]Core Data浅析一 -- 启用Core Data
  • 【挥舞JS】JS实现继承,封装一个extends方法
  • 345-反转字符串中的元音字母
  • 8年软件测试工程师感悟——写给还在迷茫中的朋友
  • AngularJS指令开发(1)——参数详解
  • avalon2.2的VM生成过程
  • canvas实际项目操作,包含:线条,圆形,扇形,图片绘制,图片圆角遮罩,矩形,弧形文字...
  • CSS实用技巧
  • flask接收请求并推入栈
  • java架构面试锦集:开源框架+并发+数据结构+大企必备面试题
  • MySQL用户中的%到底包不包括localhost?
  • node学习系列之简单文件上传
  • PhantomJS 安装
  • php中curl和soap方式请求服务超时问题
  • Redux系列x:源码分析
  • 仿天猫超市收藏抛物线动画工具库
  • 深度学习中的信息论知识详解
  • 深入浅出webpack学习(1)--核心概念
  • 看到一个关于网页设计的文章分享过来!大家看看!
  • ​一些不规范的GTID使用场景
  • # 学号 2017-2018-20172309 《程序设计与数据结构》实验三报告
  • #{}和${}的区别?
  • #android不同版本废弃api,新api。
  • #Ubuntu(修改root信息)
  • ( )的作用是将计算机中的信息传送给用户,计算机应用基础 吉大15春学期《计算机应用基础》在线作业二及答案...
  • (1)SpringCloud 整合Python
  • (55)MOS管专题--->(10)MOS管的封装
  • (70min)字节暑假实习二面(已挂)
  • (AtCoder Beginner Contest 340) -- F - S = 1 -- 题解
  • (Matalb时序预测)WOA-BP鲸鱼算法优化BP神经网络的多维时序回归预测
  • (第二周)效能测试
  • (二)JAVA使用POI操作excel
  • (附源码)springboot家庭装修管理系统 毕业设计 613205
  • (附源码)ssm码农论坛 毕业设计 231126
  • (每日持续更新)信息系统项目管理(第四版)(高级项目管理)考试重点整理第3章 信息系统治理(一)
  • (十八)三元表达式和列表解析
  • (一)【Jmeter】JDK及Jmeter的安装部署及简单配置
  • (已解决)报错:Could not load the Qt platform plugin “xcb“
  • (转)EOS中账户、钱包和密钥的关系
  • (转)setTimeout 和 setInterval 的区别