2016-05-11 2 views
0

Ich versuche, Buchcover-Bilder von Google Books API herunterzuladen. Es endet mir einen Link wie folgt geben:Ich versuche, eine Bilddatei herunterzuladen, und ich bekomme immer eine Datei mit der Nachricht "Image Not Available"

http://books.google.com/books/content?id=Tum3dwFzSngC&printsec=frontcover&img=1

Wenn Sie darauf klicken, können Sie es lädt zu sehen und es gibt. Also dann, ich nutze einfach diesen Code das Bild zum Download:

import requests 
r = requests.get('http://books.google.com/books/content?id=Tum3dwFzSngC&printsec=frontcover&img=1') 
with open('test.jpeg', "wb") as f:  
    f.write(r.content) 
    f.close() 

Aber das Bild, das ich von diesem erhalten ist immer nur eine 9 kb-Datei, die „Bild nicht verfügbar“, sagt das ich gehe davon nur aus der kommt API, wenn ein angefordertes Bild nicht vorhanden ist. Mache ich hier etwas falsch? Es scheint ziemlich normal und einfach zu sein, also bin ich mir nicht sicher, was falsch ist.

Antwort

1

Der Server möchte Sie nicht beantworten, da die Anfrage nicht von einem Browser kommt - eine übliche Vorgehensweise. Zum Beispiel habe ich das Bild in Chrome geöffnet und die Anfrage, die Chrome als CURL-Anfrage gesendet hat, kopiert und es hat funktioniert. Einfach senden:

curl 'http://books.google.com/books/content?id=Tum3dwFzSngC&printsec=frontcover&img=1' 

Nicht.

Der Server sucht nach einem Benutzeragenten. Wenn keine gültige gefunden wird, wird das Bild nicht gesendet. Sie können easily fake a user agent, oder verwenden Sie etwas wie Mechanize, um einen Browser zu emulieren. Ein einfaches Beispiel für eine CURL Anforderung, die die Antwort auf eine img.jpg speichert ist:

curl 'http://books.google.com/books/content?id=Tum3dwFzSngC&printsec=frontcover&img=1' -H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.94 Safari/537.36' >> img.jpg 
+0

Ich habe den User-Agent auf die Anforderung und es heruntergeladen immer noch die gleiche ‚nicht verfügbar‘ Datei. –

+0

Haben Sie die CURL-Anfrage, die ich aufgenommen habe, getestet? Es ist eine sehr einfache Anfrage und es funktioniert. Sind Sie sicher, dass der Benutzeragent ordnungsgemäß hinzugefügt wurde? Können Sie Ihren Post mit dem Code aktualisieren, der zum Definieren des UA verwendet wurde? –

+0

Ich habe dies verwendet: 'header = {'Benutzer-Agent': 'Mozilla/5.0 (Windows NT 6.2; Win64; x64) AppleWebKit/537.36 (KHTML, wie Gecko) Chrome/32.0.1667.0 Safari/537.36'} r = requests.get ('http://books.google.com/books/content?id=Tum3dwFzSngC&printsec=frontcover&img=1', Header = Header) ' und ich versuchte die Curl und das gab mir immer noch das gleiche nicht zur Verfügung Bild. –

Verwandte Themen