最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用Python實(shí)現(xiàn)調(diào)用API獲取圖片存儲(chǔ)到本地的方法

 更新時(shí)間:2025年05月23日 11:08:03   作者:猴麥麥  
開(kāi)發(fā)一個(gè)自動(dòng)化工具,用于從JSON數(shù)據(jù)源中提取圖像ID,通過(guò)調(diào)用指定API獲取未經(jīng)壓縮的原始圖像文件,并確保下載結(jié)果與Postman等工具直接調(diào)用API獲取的文件完全一致,下面給大家介紹使用Python實(shí)現(xiàn)調(diào)用API獲取圖片存儲(chǔ)到本地的方法,感興趣的朋友一起看看吧

使用Python實(shí)現(xiàn)調(diào)用API獲取圖片存儲(chǔ)到本地

1、項(xiàng)目概述

開(kāi)發(fā)一個(gè)自動(dòng)化工具,用于從JSON數(shù)據(jù)源中提取圖像ID,通過(guò)調(diào)用指定API獲取未經(jīng)壓縮的原始圖像文件,并確保下載結(jié)果與Postman等工具直接調(diào)用API獲取的文件完全一致。

2、核心功能

自動(dòng)解析含嵌套結(jié)構(gòu)的JSON輸入文件

API請(qǐng)求模擬引擎

精確復(fù)現(xiàn)Postman請(qǐng)求行為

支持自動(dòng)重定向跟蹤

禁用自動(dòng)解壓縮(保留原始二進(jìn)制流)

3、環(huán)境準(zhǔn)備

# 安裝依賴
pip install requests python-magic-bin==0.4.24  # Windows
pip install requests python-magic           # Linux/macOS

編輯input.json文件格式:

[
  {
    "postimage": "{...}",
    "preimage": "{...}",
    "original_image_id": "6cd6187a-a20e-f011-998a-000d3ac8927d"
  },
  // 更多數(shù)據(jù)條目...
]

4、代碼實(shí)現(xiàn)

import json
import requests
import base64
import os
import mimetypes
# 配置參數(shù)
INPUT_JSON = "input.json"  # 輸入的JSON文件路徑
OUTPUT_DIR = "raw_images"   # 圖片輸出目錄(修改目錄以示區(qū)別)
API_URL = "https://prod-53.southeastasia.logic.azure.com:443/workflows/8de920a489c7490a9e2207bd538ce964/triggers/manual/paths/invoke?api-version=2016-06-01&sp=%2Ftriggers%2Fmanual%2Frun&sv=1.0&sig=qO01WQl5tzDZeGpeVid43SpndovXbq4G7QO0NWcz7B8"
def determine_image_type(base64_str):
    """通過(guò)數(shù)據(jù)URI或魔術(shù)數(shù)字檢測(cè)圖片類型"""
    try:
        # 處理數(shù)據(jù)URI格式
        if base64_str.startswith("data:image/"):
            mime_type = base64_str.split(";")[0].split(":")[1]
            return mimetypes.guess_extension(mime_type) or ".png"
        # 通過(guò)魔術(shù)數(shù)字檢測(cè)原始二進(jìn)制格式
        decoded = base64.b64decode(base64_str)
        if decoded.startswith(b'\xff\xd8\xff'):
            return ".jpg"
        elif decoded.startswith(b'\x89PNG\r\n\x1a\n'):
            return ".png"
        elif decoded.startswith(b'GIF87a') or decoded.startswith(b'GIF89a'):
            return ".gif"
        elif decoded.startswith(b'RIFF') and decoded[8:12] == b'WEBP':
            return ".webp"
    except Exception:
        pass
    return ".bin"  # 未知類型
def process_images():
    # 創(chuàng)建輸出目錄
    os.makedirs(OUTPUT_DIR, exist_ok=True)
    # 讀取JSON文件
    try:
        with open(INPUT_JSON, 'r', encoding='utf-8') as f:
            data = json.load(f)
    except Exception as e:
        print(f"讀取JSON文件失敗: {e}")
        return
    # 遍歷處理每個(gè)條目
    for idx, item in enumerate(data, 1):
        image_id = item.get("original_image_id")
        if not image_id:
            print(f"條目 {idx} 缺少original_image_id,已跳過(guò)")
            continue
        print(f"正在處理 ({idx}/{len(data)}): {image_id}")
        # 調(diào)用API
        try:
            response = requests.post(
                API_URL,
                json={"EntityGuid": image_id},
                headers={"Content-Type": "application/json"},
                timeout=60  # 延長(zhǎng)超時(shí)時(shí)間
            )
            print(f"響應(yīng)狀態(tài)碼: {response.status_code}")
            response.raise_for_status()
        except requests.exceptions.RequestException as e:
            print(f"API調(diào)用失敗: {str(e)[:200]}")  # 顯示部分錯(cuò)誤信息
            continue
        # 處理base64數(shù)據(jù)
        try:
            base64_str = response.text
            # 檢測(cè)并分割數(shù)據(jù)URI
            if "," in base64_str:
                header, payload = base64_str.split(",", 1)
                file_ext = determine_image_type(header)
                base64_str = payload
            else:
                decoded = base64.b64decode(base64_str)
                file_ext = determine_image_type(base64_str)
            # 解碼base64
            image_data = base64.b64decode(base64_str)
            # 生成文件名(保留原始格式)
            output_path = os.path.join(OUTPUT_DIR, f"{image_id}{file_ext}")
            # 保存原始二進(jìn)制數(shù)據(jù)
            with open(output_path, "wb") as f:
                f.write(image_data)
            print(f"原始圖片已保存至: {output_path} ({len(image_data):,} bytes)")
        except Exception as e:
            print(f"處理失敗: {str(e)[:200]}")
if __name__ == "__main__":
    process_images()

5、結(jié)果查看

補(bǔ)充:python 圖片抓取 并保存到本地

import requests
from bs4 import BeautifulSoup
from PIL import Image
import os 
from io import BytesIO
import time
url = "http://www.yestone.com/gallery/1501754333627"
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36"}
r = requests.get(url, headers=headers)
soup = BeautifulSoup(r.content, 'html.parser')
items = soup.find('div',class_='images-list')
folder_path = './photo'
# html = requests.get('http://st2.cdn.yestone.com/thumbs/2704315/vector/11688/116887226/api_thumb_450.jpg')
# html = requests.get('/_nuxt/img/4c1a746.jpg')
# print(html.content)
# image = Image.open(BytesIO(html.content))
# image.save(folder_path+"/aaa.jpg")
# print(items.find_all('img'))
# exit()
if os.path.exists(folder_path) == False:
   os.makedirs(folder_path)
for index, item in enumerate(items.find_all('img')):
    if item:
        html = requests.get(item.get('src'))
        img_name = str(index + 1) + '.jpg'
        image = Image.open(BytesIO(html.content))
        image.save(folder_path+"/"+img_name)
        print('第%d張圖片下載完成' % (index + 1))
        time.sleep(1)  # 自定義延時(shí)
print('抓取完成')

到此這篇關(guān)于使用Python實(shí)現(xiàn)調(diào)用API獲取圖片存儲(chǔ)到本地的文章就介紹到這了,更多相關(guān)python 獲取圖片存儲(chǔ)到本地內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python實(shí)現(xiàn)的數(shù)據(jù)結(jié)構(gòu)與算法之鏈表詳解

    Python實(shí)現(xiàn)的數(shù)據(jù)結(jié)構(gòu)與算法之鏈表詳解

    這篇文章主要介紹了Python實(shí)現(xiàn)的數(shù)據(jù)結(jié)構(gòu)與算法之鏈表,詳細(xì)分析了鏈表的概念、定義及Python實(shí)現(xiàn)與使用鏈表的相關(guān)技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2015-04-04
  • Django 日志配置按日期滾動(dòng)的方法

    Django 日志配置按日期滾動(dòng)的方法

    今天小編就為大家分享一篇Django 日志配置按日期滾動(dòng)的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-01-01
  • 使用python客戶端訪問(wèn)impala的操作方式

    使用python客戶端訪問(wèn)impala的操作方式

    這篇文章主要介紹了使用python客戶端訪問(wèn)impala的操作方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-03-03
  • Python基于Pytorch的特征圖提取實(shí)例

    Python基于Pytorch的特征圖提取實(shí)例

    在利用深度學(xué)習(xí)進(jìn)行分類時(shí),有時(shí)需要對(duì)中間的特征圖進(jìn)行提取操作,下面這篇文章主要給大家介紹了關(guān)于Python基于Pytorch的特征圖提取的相關(guān)資料,需要的朋友可以參考下
    2022-03-03
  • Python實(shí)現(xiàn)的監(jiān)測(cè)服務(wù)器硬盤使用率腳本分享

    Python實(shí)現(xiàn)的監(jiān)測(cè)服務(wù)器硬盤使用率腳本分享

    這篇文章主要介紹了Python實(shí)現(xiàn)的監(jiān)測(cè)服務(wù)器硬盤使用率腳本分享,本文腳本適應(yīng)windows和linux系統(tǒng),需要的朋友可以參考下
    2014-11-11
  • 全面解析Python中的Scikit-learn強(qiáng)大工具

    全面解析Python中的Scikit-learn強(qiáng)大工具

    Scikit-learn是一個(gè)功能強(qiáng)大的Python機(jī)器學(xué)習(xí)庫(kù),提供了統(tǒng)一的接口實(shí)現(xiàn)各種機(jī)器學(xué)習(xí)算法,通過(guò)本文,你將了解如何安裝和使用Scikit-learn,涵蓋數(shù)據(jù)預(yù)處理、模型選擇、訓(xùn)練和評(píng)估等步驟,感興趣的朋友跟隨小編一起看看吧
    2026-01-01
  • 如何配置關(guān)聯(lián)Python 解釋器 Anaconda的教程(圖解)

    如何配置關(guān)聯(lián)Python 解釋器 Anaconda的教程(圖解)

    這篇文章主要介紹了如何配置關(guān)聯(lián)Python 解釋器 Anaconda的教程,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)火鍋工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-04-04
  • Python ORM框架SQLAlchemy學(xué)習(xí)筆記之關(guān)系映射實(shí)例

    Python ORM框架SQLAlchemy學(xué)習(xí)筆記之關(guān)系映射實(shí)例

    這篇文章主要介紹了Python ORM框架SQLAlchemy學(xué)習(xí)筆記之關(guān)系映射實(shí)例,Classic (經(jīng)典模式)和Modern (現(xiàn)代模式),分別介紹了,需要的朋友可以參考下
    2014-06-06
  • PyQT5速成教程之Qt Designer介紹與入門

    PyQT5速成教程之Qt Designer介紹與入門

    這篇文章主要介紹了PyQT5速成教程之Qt Designer介紹與入門,本文以PyCharm為例通過(guò)實(shí)例代碼圖文相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-11-11
  • 詳解如何使用Python操作MySQL的各種功能

    詳解如何使用Python操作MySQL的各種功能

    當(dāng)今互聯(lián)網(wǎng)時(shí)代,數(shù)據(jù)處理已經(jīng)成為了一個(gè)非常重要的任務(wù)。MySQL作為一款開(kāi)源的關(guān)系型數(shù)據(jù)庫(kù),被廣泛應(yīng)用于各種場(chǎng)景。本文將介紹如何使用Python操作MySQL的各種功能,以及一些高級(jí)用法,希望對(duì)大家有所幫助
    2023-04-04

最新評(píng)論

灵武市| 阿合奇县| 安康市| 泸西县| 图们市| 镇平县| 剑川县| 玉溪市| 福海县| 海原县| 广元市| 东兴市| 胶南市| 沁阳市| 资溪县| 阳新县| 赣榆县| 府谷县| 宁南县| 兰溪市| 宜君县| 横山县| 平潭县| 清水河县| 靖西县| 彰武县| 清原| 芦溪县| 洛扎县| 梅河口市| 屯昌县| 集安市| 县级市| 尚志市| 郑州市| 和政县| 肥城市| 九寨沟县| 镇宁| 静安区| 醴陵市|