Python获取网络图片的多种方法及实现详解

向北走
向北走
发布时间:2026-10-13| 6人浏览过
原创

本文详细整理了Python中获取网络图片的几种常用方法,包括使用urllib库直接下载、通过Request添加请求头模拟浏览器访问,以及利用requests库进行流式或分块下载。此外,还展示了如何结合正则表达式从网页源码中提取图片链接并保存。文中提供了完整的示例代码,涵盖文件读写、目录创建及异常处理,适合需要批量获取或整理网络图片资源的开发者参考。

Python获取网络图片方法概述

本文主要介绍了Python中获取网络图片的多种方法及其整理过程。文中通过详细的示例代码进行了说明,内容涵盖基础下载、高级请求处理及网页解析等场景,对读者的学习或实际工作具有较高的参考价值,建议有需要的读者仔细阅读并参考相关实现。

使用urllib库基础下载

方法一:使用urllib库基础下载

首先介绍如何使用Python内置的urllib库进行图片下载。该方法核心在于利用urlretrieve函数,指定远程URL和本地保存路径即可实现文件保存。需要注意的是,实际应用中应增加对地址有效性、本地路径存在性以及图片文件名的判断与处理逻辑,以确保下载的稳定性。


import urllib.request
import os ,stat
url = "https://cn.bing.com/th?id=OHR.Lidong2019_ZH-CN0761273672_1920x1080.jpg"
try:
  urllib.request.urlretrieve(url,filename="/home/baixiaoxu/desk/123.jpg")
except IOError as e:
  print("IOE ERROR")
except Exception as e:
  print("Exception")

注意:
1,获取地址,判断地址是否存在
2,本地保存地址,判断存在
3,获取远程地址的图片名,或改名
"""
url = "https://cn.bing.com/th?id=OHR.Lidong2019_ZH-CN0761273672_1920x1080.jpg"
file_suffix = os.path.split(url)[1][-20:-1]
print(file_suffix)
"""

系统库文件读写与请求头设置

其次,涉及使用系统库进行文件读写操作。在代码示例中,通过urllib.request.Request对象构建请求,并添加User-Agent头部信息以模拟浏览器访问,从而避免因缺少头部信息导致的访问被拒。随后通过urlopen获取响应,读取二进制内容后,以写模式打开本地文件并写入数据,完成图片保存。


import urllib.request
import os ,stat

req = urllib.request.Request(url)
file = "/home/baixiaoxu/desk/file-ttttt.jpg"
req.add_header('User-Agent','Mozilla/5.0 (Windows NT 6.3; WOW64; rv:51.0) Gecko/20100101 Firefox/51.0')
response = urllib.request.urlopen(url)
html = response.read()
with open(file, 'wb') as f:
   f.write(html)

网络常见下载方法整理

网络上的常见方法整理


import os
os.makedirs('./image/', exist_ok=True)
IMAGE_URL = "http://image.nationalgeographic.com.cn/2017/1122/20171122113404332.jpg"
 
def urllib_download():
  from urllib.request import urlretrieve
  urlretrieve(IMAGE_URL, './image/img1.png')   
 
def request_download():
  import requests
  r = requests.get(IMAGE_URL)
  with open('./image/img2.png', 'wb') as f:
    f.write(r.content)           
 
def chunk_download():
  import requests
  r = requests.get(IMAGE_URL, stream=True)  
  with open('./image/img3.png', 'wb') as f:
    for chunk in r.iter_content(chunk_size=32):
      f.write(chunk)

简单下载图片代码示例

以下代码展示了三种整理好的简单下载图片实现方式:第一种是使用urlretrieve直接保存;第二种是利用requests库获取响应内容后写入文件;第三种则是通过stream模式进行分块下载,适用于大文件以避免内存溢出。代码中预先创建了目标目录,并定义了不同的下载函数供选择。


import urllib
from  urllib import request
import re

response = request.urlopen('https://cn.bing.com/')
html = response.read()
ht = html.decode()
pattern = r'bgLink(.*?\.jpg)'
compile_re = re.compile(pattern)

hh = compile_re.findall(ht)
url = hh[0].split('/')[1]

download = 'https://cn.bing.com/' + url
urllib.request.urlretrieve(download,filename="/home/baixiaoxu/desk/download.jpg")

总结与展望

以上即为本文介绍的全部内容,希望这些Python获取网络图片的方法能对各位的学习和工作有所帮助。如果读者觉得有用,欢迎点赞支持,也欢迎大家继续关注我们获取更多技术分享。

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。