python从网址保存图片

时间:2015-05-14 04:28:33

标签: python image download urllib

当我使用python通过urllib2 request或urllib.urlretrieve从url保存图像时,我遇到了问题。这是图像的网址是有效的。我可以使用资源管理器手动下载它。但是,当我使用python下载图像时,无法打开该文件。我使用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())

我要下载的图片网址是 http://site.meishij.net/r/58/25/3568808/a3568808_142682562777944.jpg

此URL有效,我可以通过浏览器保存,但python代码会下载无法打开的文件。预览说"它可能已损坏或使用预览无法识别的文件格式。" 我比较了我用Python下载的图像和我通过浏览器手动下载的图像。前者的大小要小几个字节。所以似乎该文件未完成,但我不知道为什么python无法完全下载它。

9 个答案:

答案 0 :(得分:39)

import requests

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

答案 1 :(得分:30)

适用于Windows的示例代码:

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 :(得分:4)

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)

答案 3 :(得分:3)

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

答案 4 :(得分:2)

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")

答案 5 :(得分:0)

如果是Linux,请使用;您可以使用wget命令

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

答案 6 :(得分:0)

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 :(得分:0)

任何想知道如何获取图像扩展名的人,您都可以尝试在图像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)

答案 8 :(得分:0)

这是使用 urlib.request 包从Internet下载和保存图像的最简单方法。

在这里,您可以简单地传递图像URL(您要从中下载和保存图像的位置)和目录(您要在本地保存下载图像的位置,并使用.jpg或.png命名图像名称)我给了“ local-filename.jpg”。

Python 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循环,代码就会自动从Internet下载图像。