测试Python下载图片的三种方法
Posted 卓晴
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了测试Python下载图片的三种方法相关的知识,希望对你有一定的参考价值。
简 介: 通过Python软件包对网络URL图片链接进行下载,可以加快后期处理。本文测试了urllib, request两个软件包对图片进行下载效果。如果图片原网页有了防止下载机制,是无法下载图片。
§01 URL图片下载
1.1 应用背景
由于需要将网页上的图片链接直接添加在TEASOFT软件中,需要利用Python将对应的图片链接下载到本地,然后转换成JPEG文件,最后添加在TEASOFT软件中。
在 Python 下载图片的三种方法 演示了利用Python三种下载软件的方式下面进行测试,查看哪一种迅速和快捷。其中的方法在 Download Image from URL using Python 也进行的展示。
1.1.1 测试图像
2022年2月23日CSDN封面苹果图片链接:
▲ 图1.1.1 2022年2月23日CSDN封面苹果图片链接
使用右键利用鼠标点击图片,出现的快捷菜单。使用其中的“复制图片地址”(对应的快捷键为 “E”) 便可以将图片的URL复制到剪切板。
▲ 图1.1.2 使用右键利用鼠标点击图片,出现的快捷菜单
https://blog.csdn.net/m0_50065287/article/details/123045126?spm=1000.2115.3001.5926
下面就以这个图片为例,通过Python编程进行自动下载。
1.2 测试下载
1.2.1 URLLIB方法
(1)urlretrieve 方法
import sys,os,math,time
import matplotlib.pyplot as plt
from numpy import *
urlimg = r'https://blog.csdn.net/m0_50065287/article/details/123045126?spm=1000.2115.3001.5926'
imgfile = r'd:\\temp\\img1.png'
def urllib_download(url, imgfile):
from urllib.request import urlretrieve
urlretrieve(url, imgfile)
urllib_download(urlimg, imgfile)
print('\\a')
执行完之后,出现如下的信息。这究竟是为什么呢?
▲ 图1.2.1 图片无法查看
这个原因可能是由于这个照片来自于CSDN首页的照片,它禁止被网络爬虫进行下载。下面更换一个别的网页中出现的图片进行测试。
下面是更换好吧的图片链接: 下载图片连接 : https://img-blog.csdnimg.cn/0a4a866060f749ce913721963216dc05.png#pic_center
▲ 图1.2.2 更换后的下载图片下载网页
使用上面的代码便可以正常下载图片。下面是下载后使用Windows Image View看到的图片。
▲ 图1.2.3 更换另外一个图片远程连接,便可以正常下载了
(2)下载图片格式
请注意,下载文件的格式为 “.png”,如果修改成“.bmp”或者“.jpg”,在Windows下仍然可以使用Windows 照片查看进行打开,但直接粘贴在 TEASOFT 存在格式错误。
(3)urlopen 方法
def urllib_open(urlimg, imgfile):
import urllib.request
r = urllib.request.urlopen(urlimg)
with open(imgfile, 'wb') as f:
f.write(r.read())
urllib_open(urlimg, imgfile)
def urllib_open(urlimg, imgfile):
import urllib.request
req = urllib.request.Request(urlimg, headers='User-Agent': 'Mozilla/5.0')
with open(imgfile, 'wb') as f:
with urllib.request.urlopen(req) as r:
f.write(r.read())
urllib_open(urlimg, imgfile)
测试 上面程序结果正常。
1.2.2 requests.get 方法
def request_download(url, imgfile):
import requests
r = requests.get(url)
with open(imgfile, 'wb') as f:
f.write(r.content)
request_download(urlimg, imgfile)
1.2.3 chunk下载
def chunk_download(urlimg, imgfile):
import requests
r = requests.get(urlimg, stream=True)
with open(imgfile, 'wb') as f:
for chunk in r.iter_content(chunk_size=32):
f.write(chunk)
chunk_download(urlimg, imgfile)
以上三种方式经过测试,效果都是一致的。
※ 测试总结 ※
通过Python软件包对网络URL图片链接进行下载,可以加快后期处理。本文测试了urllib, request两个软件包对图片进行下载效果。如果图片原网页有了防止下载机制,是无法下载图片。
■ 相关文献链接:
● 相关图表链接:
- 图1.1.1 2022年2月23日CSDN封面苹果图片链接
- 图1.1.2 使用右键利用鼠标点击图片,出现的快捷菜单
- 图1.2.1 图片无法查看
- 图1.2.2 更换后的下载图片下载网页
- 图1.2.3 更换另外一个图片远程连接,便可以正常下载了
以上是关于测试Python下载图片的三种方法的主要内容,如果未能解决你的问题,请参考以下文章