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

爬虫案例-爬取网页图片

爬虫案例-爬取网页图片

  • 1、安装依赖库
  • 2、爬取图片的代码
  • 3、效果图

1、安装依赖库

#以下是安装http请求的第三方库
pip install requests urllib3  
#以下是安装处理图片的第三方库
pip install image pillow
#以下是安装python解析html的第三方库
pip install beautifulsoup4 

2、爬取图片的代码

import requests
import urllib3
import urllib.parse
import os
from io import BytesIO
from PIL import Image
from bs4 import BeautifulSoup

url = "URL"

http = urllib3.PoolManager()
header = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36 Edg/131.0.0.0"}
request = http.request('POST', url, headers=header)

'''以下测试用的
#响应数据
#print(request.data.decode())
#响应头信息
#print(request.headers)
#状态码
#print(request.status)
'''

data = request.data.decode()
#print(data)
soup = BeautifulSoup(data,"html.parser")

# 查找所有<img>标签
i = 0
for img_tag in soup.find_all("img"):
    i += 1
    image_url = img_tag.get("src")
    #print(image_url)
    output_folder = r"C:\Users\zzx\Desktop\图片"+"/"
    if not os.path.exists(output_folder):
        os.makedirs(output_folder)
        #print(image_url)
    if image_url:
        # 将可能的相对 URL 转换为完整的 URL
        image_url_http = urllib.parse.urljoin(url,image_url)
        #print(image_url_http)
        resp = requests.get(image_url_http,stream=True)
      #print(resp)
    try:
        image_data = BytesIO(resp.content)
      #print(image_data)
        image = Image.open(image_data)
        if '.gif' not in  image_url_http.split("/")[-1]:
            image.save(os.path.join(output_folder, f'image_{i}.png'))
            print(f"图像已成功保存到 {os.path.join(output_folder, f'image_{i}.png')}")
        elif '.gif' in image_url_http.split("/")[-1]:
            image.save(os.path.join(output_folder, f'image_{i}.gif'))
            print(f"图像已成功保存到 {os.path.join(output_folder, f'image_{i}.gif')}")
    except Exception as e :
        print(f"保存图像时出错:{e}")
        try:
            # 将图像转换为常见的 JPEG 格式
            if image.mode in ('RGBA', 'LA'):
                image = image.convert('RGB')
            image.save(os.path.join(output_folder, f'image_{i}.jpg'))
            print(f"图像已成功保存到 {os.path.join(output_folder, f'image_{i}.jpg')}")
        except Exception as e:
          print(f"转换并保存图像时出错: {e}")
    print(i,image_url)

3、效果图

在这里插入图片描述

在这里插入图片描述


http://www.kler.cn/a/458037.html

相关文章:

  • Swift Combine 学习(五):Backpressure和 Scheduler
  • vscode代码AI插件Continue 安装与使用
  • 软考教材重点内容 信息安全工程师 第 12 章网络安全审计技术原理与应用
  • 杰盛微 JSM4056 1000mA单节锂电池充电器芯片 ESOP8封装
  • 动态规划<八> 完全背包问题及其余背包问题
  • [实用指南]如何将视频从iPhone传输到iPad
  • 基于STM32的智能垃圾桶的Proteus仿真
  • 使用 pushy 热更新后 sentry 不能正常显示源码
  • 玉米中的元基因调控网络突出了功能上相关的调控相互作用。/biosample_parser.py
  • 秒鲨后端之MyBatis【2】默认的类型别名、MyBatis的增删改查、idea中设置文件的配置模板、MyBatis获取参数值的两种方式、特殊SQL的执行
  • py打包工具
  • Python + 深度学习从 0 到 1(02 / 99)
  • 基于深度学习(HyperLPR3框架)的中文车牌识别系统-Qt调用Python
  • 在vue3中使用tsx结合render封装一个项目内通用的弹窗组件
  • Docker的概述与安装
  • 算法基础一:冒泡排序
  • React引入Echart水球图
  • systemverilog语法:assertion sequence
  • node-js Express防盗链
  • Spring Boot 多数据源解决方案:dynamic-datasource-spring-boot-starter 的奥秘(下)
  • 1.flask介绍、入门、基本用法
  • Python-网络爬虫
  • Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin(自测问题解决!)
  • 【每日学点鸿蒙知识】页面反向传值、图片撑满问题、清除Web缓存、Refresh支持swiper、POP颜色没效果
  • 验证ETL程序产生数据的正确性以及确保数据质量的方法
  • 【畅购商城】详情页详情之商品详情