>백엔드 개발 >파이썬 튜토리얼 >Python의 요청 모듈을 사용하여 이미지를 효율적으로 다운로드하는 방법은 무엇입니까?

Python의 요청 모듈을 사용하여 이미지를 효율적으로 다운로드하는 방법은 무엇입니까?

DDD
DDD원래의
2024-12-18 10:19:13272검색

How to Efficiently Download Images with Python's Requests Module?

Python에서 요청 모듈을 사용하여 이미지 다운로드

요청 모듈을 사용하여 웹에서 이미지를 다운로드하고 저장하려는 노력으로 개발자는 어려움에 직면합니다. 제공된 코드는 처음에는 작동하지만 요청을 사용하여 코드를 수정하면 오류가 발생합니다.

요청 응답에서 잘못된 속성을 사용하여 오류가 발생합니다. 요청을 사용하여 이미지를 성공적으로 검색하려면 다음 두 가지 옵션이 있습니다.

response.raw 파일 객체 사용

response.raw 속성을 활용하면 해당 파일의 원시 데이터가 반환됩니다. 응답. 압축된 응답의 디코딩(예: GZIP 또는 deflate 사용)은 자동으로 처리되지 않습니다. 강제로 압축을 풀려면 decode_content 속성을 True로 설정하세요. 그런 다음, quitil.copyfileobj()를 사용하여 데이터를 파일 객체로 스트리밍합니다.

import requests
import shutil

r = requests.get(settings.STATICMAP_URL.format(**data), stream=True)
if r.status_code == 200:
    with open(path, 'wb') as f:
        r.raw.decode_content = True
        shutil.copyfileobj(r.raw, f)

응답 반복

대체 접근 방식은 응답을 반복하는 것입니다. , 이는 데이터 압축 해제를 보장합니다.

r = requests.get(settings.STATICMAP_URL.format(**data), stream=True)
if r.status_code == 200:
    with open(path, 'wb') as f:
        for chunk in r:
            f.write(chunk)

다음을 사용하여 청크 크기를 사용자 정의할 수 있습니다. Response.iter_content() 메서드.

r = requests.get(settings.STATICMAP_URL.format(**data), stream=True)
if r.status_code == 200:
    with open(path, 'wb') as f:
        for chunk in r.iter_content(1024):
            f.write(chunk)

개행 번역을 방지하려면 대상 파일을 바이너리 모드로 열고 메모리 집약적인 전체 다운로드를 방지하려면 stream=True로 설정해야 합니다.

위 내용은 Python의 요청 모듈을 사용하여 이미지를 효율적으로 다운로드하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.