簡體   English   中英

如何獲取python以從互聯網成功下載大圖像

[英]How to get python to successfully download large images from the internet

所以我一直在用

urllib.request.urlretrieve(URL, FILENAME)

下載互聯網圖像。 它的效果很好,但在某些圖像上卻失敗。 它失敗的原因似乎是較大的圖像,例如。 http://i.imgur.com/DEKdmba.jpg 它可以很好地下載它們,但是當我嘗試打開這些文件時,照片查看器顯示以下錯誤:“ Windows照片查看器無法打開此圖片,因為該文件似乎已損壞,損壞或太大”。

無法下載這些文件的原因可能是什么,我該如何解決?

編輯:進一步查看后,我認為問題不在於大圖像-它設法下載更大的圖像。 似乎有些隨機的文件,每當我再次運行該腳本時,它便永遠無法下載。 現在我更加困惑

過去,我曾使用此代碼從互聯網進行復制。 我沒有大文件的麻煩。

def download(url):
    file_name = raw_input("Name: ")
    u = urllib2.urlopen(url)
    f = open(file_name, 'wb')
    meta = u.info()
    file_size = int(meta.getheaders("Content-Length")[0])
    print "Downloading: %s Bytes: %s" % (file_name, file_size)  
    file_size_dl = 0
    block_size = 8192
    while True:
        buffer = u.read(block_size)
        if not buffer:
            break 

這是Python 3的示例代碼(已在Windows 7中測試):

import urllib.request

def download_very_big_image():
    url = 'http://i.imgur.com/DEKdmba.jpg'
    filename = 'C://big_image.jpg'
    conn = urllib.request.urlopen(url)
    output = open(filename, 'wb') #binary flag needed for Windows
    output.write(conn.read())
    output.close()

為了完整起見,這是Python 2中的等效代碼:

import urllib2

def download_very_big_image():
    url = 'http://i.imgur.com/DEKdmba.jpg'
    filename = 'C://big_image.jpg'
    conn = urllib2.urlopen(url)
    output = open(filename, 'wb') #binary flag needed for Windows
    output.write(conn.read())
    output.close()

這應該工作:使用requests模塊:

import requests

img_url = 'http://i.imgur.com/DEKdmba.jpg'
img_name = img_url.split('/')[-1]
img_data = requests.get(img_url).content
with open(img_name, 'wb') as handler:
    handler.write(img_data)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM