Reputation: 21
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
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.
Upvotes: 1
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