개발/Python

URL에서 파이썬 저장 이미지

MinorMan 2021. 1. 7. 07:52
반응형

<질문>

urllib2 요청 또는 urllib.urlretrieve로 URL에서 이미지를 저장하기 위해 파이썬을 사용할 때 문제가 발생했습니다. 그것은 이미지의 URL이 유효합니다. 탐색기를 사용하여 수동으로 다운로드 할 수 있습니다. 그러나 파이썬을 사용하여 이미지를 다운로드하면 파일을 열 수 없습니다. Mac OS 미리보기를 사용하여 이미지를 봅니다. 감사합니다!

최신 정보:

코드는 다음과 같습니다.

def downloadImage(self):
    request = urllib2.Request(self.url)
    pic = urllib2.urlopen(request)
    print "downloading: " + self.url
    print self.fileName
    filePath = localSaveRoot + self.catalog  + self.fileName + Picture.postfix
    # urllib.urlretrieve(self.url, filePath)
    with open(filePath, 'wb') as localFile:
        localFile.write(pic.read())

다운로드하려는 이미지 URL은

http://site.meishij.net/r/58/25/3568808/a3568808_142682562777944.jpg

이 URL은 유효하며 브라우저를 통해 저장할 수 있지만 파이썬 코드는 열 수없는 파일을 다운로드합니다. 미리보기에 "손상되었거나 미리보기에서 인식하지 못하는 파일 형식을 사용하고있을 수 있습니다."라고 표시됩니다. Python으로 다운로드 한 이미지와 브라우저를 통해 수동으로 다운로드 한 이미지를 비교합니다. 이전의 크기는 몇 바이트 더 작습니다. 그래서 파일이 완성되지 않은 것 같지만 왜 파이썬이 그것을 완전히 다운로드 할 수 없는지 모르겠습니다.


<답변1>

Windows에서 나를 위해 작동하는 샘플 코드 :

import requests

with open('pic1.jpg', 'wb') as handle:
        response = requests.get(pic_url, stream=True)

        if not response.ok:
            print response

        for block in response.iter_content(1024):
            if not block:
                break

            handle.write(block)

<답변2>

import requests

img_data = requests.get(image_url).content
with open('image_name.jpg', 'wb') as handler:
    handler.write(img_data)

<답변3>

URL에서 파일을 다운로드하고 이름으로 저장하는 Python 코드 스 니펫

import requests

url = 'http://google.com/favicon.ico'
filename = url.split('/')[-1]
r = requests.get(url, allow_redirects=True)
open(filename, 'wb').write(r.content)

<답변4>

인터넷에서 이미지를 다운로드하고 저장하는 가장 간단한 방법입니다.

urlib.request

꾸러미.

여기에서 이미지 URL (이미지를 다운로드하고 저장하려는 위치)과 디렉토리 (다운로드 이미지를 로컬에 저장하려는 위치, 이미지 이름을 .jpg 또는 .png로 지정)를 전달하면됩니다. local-filename.jpg "는 이것으로 대체합니다.

파이썬 3

import urllib.request
imgURL = "http://site.meishij.net/r/58/25/3568808/a3568808_142682562777944.jpg"

urllib.request.urlretrieve(imgURL, "D:/abc/image/local-filename.jpg")

인터넷에서 모든 이미지 URL이있는 경우 여러 이미지를 다운로드 할 수도 있습니다. 해당 이미지 URL을 for 루프에 전달하면 코드가 인터넷에서 이미지를 자동으로 다운로드합니다.


<답변5>

import random
import urllib.request

def download_image(url):
    name = random.randrange(1,100)
    fullname = str(name)+".jpg"
    urllib.request.urlretrieve(url,fullname)     
download_image("http://site.meishij.net/r/58/25/3568808/a3568808_142682562777944.jpg")

<답변6>

import urllib.request
import os

img_url = "https://betanews.com/wp-content/uploads/2017/09/firefox-logo.jpg"
img_name = os.path.basename(img_url)
urllib.request.urlretrieve(img_url,img_name)

<답변7>

Python3

import urllib.request
print('Beginning file download with urllib2...')
url = 'https://akm-img-a-in.tosshub.com/sites/btmt/images/stories/modi_instagram_660_020320092717.jpg'
urllib.request.urlretrieve(url, 'modiji.jpg')

출력 결과

enter image description here

<답변8>

리눅스의 경우; wget 명령을 사용할 수 있습니다.

import os
url1 = 'YOUR_URL_WHATEVER'
os.system('wget {}'.format(url1))

<답변9>

이미지 확장을 얻는 방법을 궁금해하는 사람은 이미지 URL에서 문자열 분할 방법을 시도해 볼 수 있습니다.

str_arr = str(img_url).split('.')
img_ext = '.' + str_arr[3] #www.bigbasket.com/patanjali-atta.jpg (jpg is after 3rd dot so)
img_data = requests.get(img_url).content
with open(img_name + img_ext, 'wb') as handler:
    handler.write(img_data)
반응형