Python3 urllib image retreval
Piszę mały skrypt w Pythonie do pobierania obrazów za pośrednictwem obrazów Google. Udało mi się doprowadzić do tego, że mam adresy URL obrazów, które chcę, na poręcznej liście. Teraz muszę je tylko złapać ...
dla każdego adresu URL obrazu robię to:
print("Retrieving:{0}".format(sFinalImageURL))
sExt = sFinalImageURL.split('.')[-1]
#u = urllib.request.urlopen(sFinalImageURL)
try:
u = urllib.request.urlopen(sFinalImageURL)
except:
print("error: cannot retrieve image")
continue
raw_data = u.read()
print("read {0} bytes".format(len(raw_data)))
u.close()
global sImagesFolder
try:
f = open("{0}/{1}_{2}.{3}".format(sImagesFolder,sImage,i,sExt),'wb')
f.write(raw_data)
f.close()
except:
print("couldn't write to {0}/{1}_{2}.{3}".format(sImagesFolder,sImage,i,sExt))
print()
Oto problemy, przed którymi stoję:
Próba otwarcia niektórych adresów URL daje mi 403, chociaż mogę otworzyć adresy URL bezpośrednio w przeglądarce. Więc w nagłówku żądania HTTP jest coś, czego serwer obrazów nie lubi ... jakieś pomysły?
Oto niektóre wyniki:
Retrieving:[url=http://upload.wikimedia.org/wikipedia/commons/thumb/4/43/Timba%2B1.jpg/220px-Timba%2B1.jpgerror:]http://upload.wikimedia.org/wi ... rror:[/url] cannot retrieve imageRetrieving:[url=http://upload.wikimedia.org/wikipedia/commons/thumb/2/26/YellowLabradorLooking_new.jpg/260px-YellowLabradorLooking_new.jpgerror:]http://upload.wikimedia.org/wi ... rror:[/url] cannot retrieve image
Retrieving:[url=http://1.bp.blogspot.com/-7SsJ1n3RdoA/Tf07NOgD5nI/AAAAAAAAABo/tl8qLLIU01Y/s1600/english-shepherd-dog-0003.jpgread]http://1.bp.blogspot.com/-7SsJ ... gread[/url] 11123 bytesRetrieving:[url=http://completedogfood.net/wp-content/uploads/2010/07/complete-dog-food.bmp]http://completedogfood.net/wp- ... d.bmp[/url]
read 419630 bytes
Nie znaleziono powiązanych wyników
Zaproszony:
Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się
1 odpowiedzi
Anonimowy użytkownik
Potwierdzenie od:
Problem można rozwiązać, podając ciąg znaków prawdziwej przeglądarki, ponieważ Python domyślnie wysyła coś takiego jak ...
Oto przykład, który działa (z ciągiem znaków używanej przeglądarki):