Python从指定网页上下载所有图片到本地存储路径(PyCharm实现)

运行前需要准备必要的包,`requests` 用于发起 HTTP 请求,`BeautifulSoup` 来自 bs4 用于解析 HTML,`urljoin` 来自 urllib.parse 用于拼接 URL,以及 `urlretrieve` 来自 urllib.request 用于下载文件。

python 复制代码
import os
import requests
from bs4 import BeautifulSoup
from urllib.parse import urljoin
from urllib.request import urlretrieve

先定义 download_images 函数,接受 url(包含图片的网页的URL)和 save_dir(保存图像的目录)这两个参数,再检查指定的目录 save_dir 是否不存在,如果不存在,则使用os.makedirs(save_dir) 创建该目录。用 requests.get(url) 发送 HTTP GET 请求到 url 变量中指定的 URL。用 response.raise_for_status() 来检查请求是否成功,否则会引发异常。用 BeautifulSoup 和 html.parser 这个解析器来解析响应内容。用 soup.find_all('img') 找到 HTML 内容中的所有图像标签。

python 复制代码
def download_images(url, save_dir):
    if not os.path.exists(save_dir):
        os.makedirs(save_dir)
    response = requests.get(url)#发送http请求
    response.raise_for_status()  # 如果请求失败,抛出异常
    soup = BeautifulSoup(response.text, 'html.parser')#解析界面
    image_links = soup.find_all('img')

在函数中遍历找到的每个图像标签,并提取包含图像 URL 的 src 属性。如果图像 URL 是相对路径,则使用 urljoin(url, img_url) 将其转换为绝对 URL。图像名称通过提取 URL 的最后一部分(img_url.split('/')[-1])并与保存目录路径连接而确定,使用 os.path.join、urlretrieve(img_url, img_name) 从 URL 下载图像,并将其保存到指定目录。

python 复制代码
    for img in image_links:
        img_url = img.get('src')
        if not img_url.startswith(('http://','https://')):#相对转绝对路径
            img_url = urljoin(url, img_url)
        img_name = os.path.join(save_dir, img_url.split('/')[-1])
        urlretrieve(img_url, img_name)
        print(f"Downloaded: {img_name}")

最后用实际要从中提取图像的网页的 URL 和要保存图像的目录路径替换占位符 `"https://"` 和 `"D:\"`。

总代码如下:

python 复制代码
import os
import requests
from bs4 import BeautifulSoup
from urllib.parse import urljoin
from urllib.request import urlretrieve

def download_images(url, save_dir):
    if not os.path.exists(save_dir):
        os.makedirs(save_dir)
    response = requests.get(url)#发送http请求
    response.raise_for_status()  # 如果请求失败,抛出异常
    soup = BeautifulSoup(response.text, 'html.parser')#解析界面
    image_links = soup.find_all('img')
    for img in image_links:
        img_url = img.get('src')
        if not img_url.startswith(('http://','https://')):#相对转绝对路径
            img_url = urljoin(url, img_url)
        img_name = os.path.join(save_dir, img_url.split('/')[-1])
        urlretrieve(img_url, img_name)
        print(f"Downloaded: {img_name}")

url = "https://"#你要爬取的网页
save_dir = "D:\"#存储路径
download_images(url, save_dir)
相关推荐
爱打球的白师傅12 分钟前
python机器学习工程化demo(包含训练模型,预测数据,模型列表,模型详情,删除模型)支持线性回归、逻辑回归、决策树、SVC、随机森林等模型
人工智能·python·深度学习·机器学习·flask·逻辑回归·线性回归
无敌最俊朗@29 分钟前
C++-Qt-音视频-基础问题01
开发语言·c++
kyle~31 分钟前
C++---万能指针 void* (不绑定具体数据类型,能指向任意类型的内存地址)
开发语言·c++
MediaTea40 分钟前
Python 第三方库:TensorFlow(深度学习框架)
开发语言·人工智能·python·深度学习·tensorflow
vortex51 小时前
Bash Glob 通配符详细指南:从 POSIX 标准到高级用法
开发语言·bash
KdanMin1 小时前
Android MediaCodec 硬编解码实战:从Camera预览到H264流与回环渲染
android·开发语言
Joker-Tong1 小时前
大模型数据洞察能力方法调研
人工智能·python·agent
B站计算机毕业设计之家1 小时前
基于Python+Django+双协同过滤豆瓣电影推荐系统 协同过滤推荐算法 爬虫 大数据毕业设计(源码+文档)✅
大数据·爬虫·python·机器学习·数据分析·django·推荐算法
逻极1 小时前
Webhook 全解析:事件驱动时代的实时集成核心技术
python·web
程序员三藏1 小时前
一文了解UI自动化测试
自动化测试·软件测试·python·selenium·测试工具·职场和发展·测试用例