Ted
Ted

Reputation: 21

Can't Extract Image From PHP in Python

I'm trying to build a program in Python that will scrape a website for an image and download it, but the website returns this link:

http://www.tapmusic.net/lastfm/collage.php?user=kogam7&type=7day&size=5x5

Which doesn't have a *.jpg or *.png extension. So when I try to use the following code:

import urllib , urllib2, os , sys , time
img = urllib.urlopen("http://www.tapmusic.net/lastfm/collage.php?user=kogam7&type=7day&size=5x5").read()
hand0 = open("test.jpg" , "w")
hand0.write(img)
hand0.close()

It writes an image that looks like this:

https://i.sstatic.net/yWCBg.jpg

Does anyone know what's going wrong?

Upvotes: 0

Views: 792

Answers (2)

Katpoes
Katpoes

Reputation: 209

from urllib2 import urlopen

# Use 'wb' over 'w' 
with open('image.jpg', 'wb') as f:
    f.write(urlopen('http://www.tapmusic.net/lastfm/collage.php?user=kogam7&type=7day&size=5x5').read())

Learn more about what 'wb' stands for and why it is required on windows.

What is the 'wb' mean in this code, using Python?

Upvotes: 1

mhawke
mhawke

Reputation: 87084

You must open the output file in binary mode by passing "wb" to open(). This is significant if you are using Windows (which I assume you are because your code should otherwise work), i.e.

import urllib , urllib2, os , sys , time
img = urllib.urlopen("http://www.tapmusic.net/lastfm/collage.php?user=kogam7&type=7day&size=5x5").read()
hand0 = open("test.jpg" , "wb")
hand0.write(img)
hand0.close()

Upvotes: 0

Related Questions