首页 > 编程语言 >Python 下载 html 中的 图片

Python 下载 html 中的 图片

时间:2024-08-02 09:39:20浏览次数:6  
标签:img Python image url html download requests os 下载

安装 requests、beautifulsoup4 库

# 安装 requests、beautifulsoup4 库
pip install requests beautifulsoup4 -i https://pypi.tuna.tsinghua.edu.cn/simple

完成代码

# pip install requests beautifulsoup4 -i https://pypi.tuna.tsinghua.edu.cn/simple

import os
import requests
from bs4 import BeautifulSoup
from urllib.parse import urlparse, urljoin


def download_images(url):
    headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36"
    }

    # 发送HTTP请求并获取网页源代码
    response = requests.get(url, headers=headers)
    if response.status_code == 200:

        # 使用 BeautifulSoup 解析 HTML 内容
        soup = BeautifulSoup(response.text, "html.parser")

        # 创建一个目录来保存下载的图片
        download_dir = os.path.join(os.getcwd(), 'download_images')
        # 创建保存图片的文件夹
        os.makedirs(download_dir, exist_ok=True)

        # 获取图片链接
        image_links = []
        img_tags = soup.find_all('img')
        for img_tag in img_tags:
            # 获取图片的 URL
            img_url = img_tag.get('src')
            if img_url:
                if img_url.startswith("http"):
                    image_links.append(img_url)
                else:
                    # 将相对路径转换为绝对路径
                    img_url = urljoin(url, img_url)
                    image_links.append(img_url)

        # 下载图片并保存到文件夹
        for i, image_link in enumerate(image_links):
            img_response = requests.get(image_link, headers=headers)
            if img_response.status_code == 200:
                # 提取图片文件名
                img_filename = os.path.basename(urlparse(image_link).path)

                # 保存图片到本地
                with open(os.path.join(download_dir, img_filename), 'wb') as img_file:
                    img_file.write(img_response.content)
                print(f"Downloaded: {img_filename}")
            else:
                print(f"Failed to download image from: {img_url}")


if __name__ == "__main__":
    # url = input("Enter the URL to scrape images from: ")
    url = "http://www.vipsoft.com.cn"
    download_images(url)

标签:img,Python,image,url,html,download,requests,os,下载
From: https://www.cnblogs.com/vipsoft/p/18338040

相关文章

  • 比较不同的excel,或者同一个excel的两个不同sheet页,并将不同之处标红,python代码实现
    importopenpyxlfromopenpyxl.stylesimportPatternFill#对比两个sheet,数据一致性校验#获取sheet对象的某一行defgetRow(sheet,rowNo):try:rows=[]forrowinsheet.iter_rows():rows.append(row)returnrows[rowNo-......
  • Python连接MinIO:实现高效的对象存储管理
    文章目录概要环境准备Python连接MinIO注意事项小结概要在云计算和大数据领域,对象存储因其可扩展性、高可用性和成本效益而备受青睐。MinIO是一个高性能的分布式对象存储服务器,它兼容AmazonS3云存储服务API。使用Python连接MinIO,你可以轻松地在你的应用程序中集成对......
  • python中字典的学习
    字典(dict)目录字典(dict)字典的概念字典操作字典的遍历字典的常用方法字典的概念dictionary(字典)是除列表以外python之中最灵活的数据类型字典同样可以用来存储多个数据通常用于存储描述一个物体的相关信息和列表的区别列表是有序的对象集合字典是无序的对象集合......
  • Python连接MinIO进阶教程:文件类型指定、上传与获取预览链接
    文章目录概要1.指定文件内容类型2.获取文件的预览链接(PresignedURL)使用fput_object上传文件4.完整示例与总结概要在上一篇文章中,我们介绍了如何使用Python连接MinIO服务器,并进行了基本的文件上传和下载操作。这次,我们将深入探讨一些进阶功能,包括在上传文件时指......
  • HTML基础笔记
    1.HTML语法规范1.1基本语法概述1.HTML标签是由尖括号包围的关键词,例如<html>2.HTML通常是成对出现的,叫做双标签,分别是开始标签,结束标签。<html></html>3。有些特殊的标签必须是单标签。<br/>1.2标签关系双标签关系可以分为两类:包含关系和并列关系。<html><head......
  • Python装饰器
    Python装饰器TableofContents引子函数式调用语法糖加上参数login函数有参数装饰器本身有参数装饰有返回值的函数多个装饰器灵活运用想理解Python的装饰器,首先要知道在Python中函数也是一个对象,所以可以:将函数赋值给变量将函数当做参数返回一个函数......
  • Windows下下载编译boost库
    下载boost库链接:https://www.boost.org/下载最新的版本即可,因为最新的版本是兼容以前版本的。编译boost库下载后解压如果没有b2.exe就先双击一下booststrap.bat自动生成文件。然后在此目录打开cmd;执行命令:.\b2.exeinstall--toolset=msvc-14.3--build-type=complete--......
  • Python数据容器(2)
    一、数据容器:tuple(元组)1.定义同列表一样,但是形成后不可修改单个元组需要加上单独的逗号2.特定可以容纳多个数据可以不同数据类型混装运行数据重复不可修改支持循环3.特例元组中如果有list列表,则可以修改list中的数据4.常用操作下标查询语法:元组.index(元素)统计个......
  • Python数据容器(1)
    一、数据容器入门1.定义一份变量多个数据一个数据称为1个元素2.特点是否支持重复元素是否可以修改是否有序3.类别列表(list)元组(tuple)字符串(str)集合(set)字典(dict)二、数据容器:list(列表)1.下标索引把列表元素取出来(左到右0→123)(右到左-1→-123)序号也可......
  • 初学Python:第五天
    今天学习了有关于字典的定义和相关操作:1、新增元素语法:字典[key]=value结果:字典被修改,新增了元素更新元素语法:字典[key]=value结果:字典被修改,元素被更新注意:字典key不可以重复,所以对已存在的key执行上述操作,就是更新value值2、删除元素语法:字典.pop(Key)结果:获得......