jumpman8947
jumpman8947

Reputation: 437

Python 2.7 download images

I'm using python 2.7 and pycharm is my editor. What i'm trying to do is have python go to a site and download an image from that site and save it to my directory. Currently I have no errors but i don't think its downloading because the file is not showing in my directory.

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

Upvotes: 3

Views: 4918

Answers (3)

fsimkovic
fsimkovic

Reputation: 1128

This will do the trick. The rest can stay the same, just edit your function to include the two lines I have added.

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)

Edit 1:

Exact code as requested in comments.

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

Upvotes: 3

Malik Brahimi
Malik Brahimi

Reputation: 16711

You are simply creating a Request but you are not downloading the image. Try the following instead:

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

Upvotes: 2

user3612338
user3612338

Reputation: 11

Or try the requests library:

import requests

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

Upvotes: 1

Related Questions