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

python 爬取网站图片的小demo

# demo.py
# 首先引入各个模块
import os
import requests
from bs4 import BeautifulSoup
from urllib.parse import urljoin

def download_static_resources(url, output_dir="downloads"):
    # 创建输出目录
    if not os.path.exists(output_dir):
        os.makedirs(output_dir)
    
    # 设置请求头,模拟浏览器访问
    headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36"
    }
    
    try:
        # 发送请求获取网页内容
        response = requests.get(url, headers=headers)
        if response.status_code != 200:
            print("无法访问页面,请检查链接是否有效!")
            return
        
        # 使用 BeautifulSoup 解析 HTML 内容
        soup = BeautifulSoup(response.text, 'html.parser')
        
        # 查找所有图片标签
        img_tags = soup.find_all("img")
        print(f"找到 {len(img_tags)} 张图片")
        
        for img in img_tags:
            # 获取图片的 src 属性
            img_url = img.get("src") or img.get("data-src")  # 有些图片可能使用 data-src
            if not img_url:
                continue
            
            # 将相对路径转换为绝对路径
            img_url = urljoin(url, img_url)
            
            # 下载图片
            try:
                img_response = requests.get(img_url, headers=headers)
                if img_response.status_code == 200:
                    # 提取文件名
                    img_name = os.path.basename(img_url.split("?")[0])  # 去掉查询参数
                    img_path = os.path.join(output_dir, img_name)
                    
                    # 保存图片到本地
                    with open(img_path, "wb") as img_file:
                        img_file.write(img_response.content)
                    print(f"已下载:{img_name}")
                else:
                    print(f"无法下载图片:{img_url}")
            except Exception as e:
                print(f"下载图片时出错:{e}")
    
    except Exception as e:
        print("发生错误:", e)

# 测试代码
if __name__ == "__main__":
    print("欢迎使用网页图片下载器!")
    print("请输入要下载图片的网页地址,按回车确认。")
    target_url = input("网页地址:")
    print("开始下载...")
    download_static_resources(target_url)
    print("\n下载完成!按回车键退出...")
    input()

使用:先安装必要的库,

pip install requests beautifulsoup4

运行:

python "/demo.py"

 

我们可以使用 PyInstaller 来将这个 Python 脚本打包成 exe 文件。以下是具体步骤:

pip install pyinstaller
pyinstaller --onefile --icon=download.ico demo.py


- --onefile : 打包成单个exe文件
- --icon : 添加图标(可选,需要准备一个.ico文件)

 

http://www.dtcms.com/a/108678.html

相关文章:

  • 【AI论文】CodeARC:评估归纳程序合成中大语言模型代理的推理能力基准
  • Xilinx FPGA XCVC1902-2MSEVSVA2197 Versal AI Core系列芯片的详细介绍
  • Java中的方法重载
  • 第J3-1周:DenseNet算法 实现乳腺癌识别(含真实图片预测)
  • 牛客练习题——素数(质数)
  • 策略模式实际用处,改吧改吧直接用,两种方式
  • DataFrame行索引操作以及重置索引
  • 第二期:深入理解 Spring Web MVC [特殊字符](核心注解 + 进阶开发)
  • Golang封装Consul 服务发现库
  • Linux进程管理与进程间通信
  • 如何将本地项目上传到Gitee的指定分支
  • 【2-6】数字调制
  • 蓝桥杯2024JavaB组的一道真题的解析
  • 云计算:基础、概念与未来展望
  • vue2拖拉拽做个模拟公式工具
  • 计算机视觉算法实战——基于YOLOv8的行人流量统计系统
  • 缺页异常导致的iowait打印出相关文件的绝对路径
  • Linux红帽:RHCSA认证知识讲解(十)使用 tar创建归档和压缩文件
  • RAG库搭建:从零开始,开启智能问答新世界
  • OpenCV 图形API(15)计算两个矩阵(通常代表二维向量的X和Y分量)每个对应元素之间的相位角(即角度)函数phase()
  • Ubuntu换Windows磁盘格式化指南
  • 二,<FastApi>FastApi的两个核心组件
  • JavaScript基础-window.sessionStorage
  • 通信算法之255:无人机频谱探测设备技术详解
  • 使用Kafka和kafkajs构建示例项目
  • 前端面试题(三):axios有哪些常用的方法
  • Linux上位机开发实践(从用板子到自己做板子)
  • 针对 SQL 查询中 IN 子句性能优化 以及 等值 JOIN 和不等值 JOIN 对比 的详细解决方案、代码示例及表格总结
  • Webpack vs Vite:现代前端构建工具的巅峰对决与选型指南
  • Linux学习七——进程回收