Python 2.7 下载图片

3

我正在使用Python 2.7,并使用Pycharm作为编辑器。我的目标是让Python去一个网站下载图片,然后将其保存到我的目录中。目前没有出现错误,但我认为它没有下载成功,因为目录中没有显示该文件。

import random
import urllib2

def download_web_image(url):
    name = random.randrange(1,1000)
    full_name = str(name) + ".jpg"
    urllib2.Request(url, full_name)

download_web_image("www.example.com/page1/picture.jpg")

1
尝试使用绝对路径来引用图片。 - chishui
但是urllib2.Request应该保存内容吗? - ForceBru
你需要将对象写入文件。 - maggick
可能是使用urllib2无法保存网络图片的重复问题。 - fsimkovic
可能是通过urllib和Python下载图片的重复问题。 - Jose Ricardo Bustos M.
3个回答

3
这样做就行了。其余的保持不变,只需编辑您的函数以包含我添加的两行代码。
def download_web_image(url):
    name = random.randrange(1,1000)
    full_name = str(name) + ".jpg"
    request = urllib2.Request(url)
    img = urllib2.urlopen(request).read()
    with open (full_name, 'w') as f: f.write(img)

编辑 1:

按照评论中的要求提供精确代码。

import urllib2

def download_web_image(url):
    request = urllib2.Request(url)
    img = urllib2.urlopen(request).read()
    with open ('test.jpg', 'w') as f: f.write(img)

download_web_image("http://upload.wikimedia.org/wikipedia/commons/8/8c/JPEG_example_JPG_RIP_025.jpg")

请尝试使用此处的图像(http://upload.wikimedia.org/wikipedia/commons/8/8c/JPEG_example_JPG_RIP_025.jpg),因为我得到了奇怪的扭曲。 - Malik Brahimi
@MalikBrahimi 你是什么意思?对我来说完全正常运行! - fsimkovic
谢谢,这确实解决了问题。我遇到的一个问题是我的测试图像出现了扭曲和绿色,所以可能是图像本身的问题,我将尝试其他图像来查看是否有效。 - jumpman8947
@jumpman8947 奇怪,这对我来说可以工作,看起来应该是这样。只是为了确认,棕色叶子,灰色石头,一点绿色草在左上角和右下角。 - fsimkovic
@MalikBrahimi 那我不知道了。无论我尝试多少次,我都无法重现任何扭曲或颜色问题。也许是操作系统的问题。我使用的是OS X Yosemite 10.10.3和Python 2.7.6。 - fsimkovic
显示剩余3条评论

2

您只是创建了一个请求,但并没有下载这个图片。请尝试以下操作:

urllib.urlretrieve(url, os.path.join(os.getcwd(), full_name)) # download and save image

我正在使用Python 2.7,因此必须使用urllib2。 - jumpman8947
urllib 包含在 Python 的两个版本中。事实上,我正在使用 2.7 版本。 - Malik Brahimi

1

或者尝试使用requests库:

import requests

image = requests.get("www.example.com/page1/picture.jpg")
with open('picture.jpg', 'wb') as f:
    f.write(image.content)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接