2016-05-28 4 views
0

Ich habe versucht, ein Bild von der Website herunterzuladen (kein Benutzername und Passwort erforderlich), aber jedes Mal bekomme ich eine leere Datei. Ich habe konventionelle Urlib. Retrieve und Requests Methoden verwendet, aber das gleiche Ergebnis erhalten. Eine Sache mehr ist, dass, wenn ich versuche, das gleiche Bild manuell zu öffnen, indem ich die URL nach 15-20 Minuten kopiere, dann das Bild selbst nicht öffnet. Ich gehe davon aus, dass in diesem Fall eine Art Session-Handling erforderlich ist. Unten ist mein Code, der mir ein leeres Bild zurückgibt.Erhalte eine leere JPG-Datei, versuche ein Bild herunterzuladen

import os 
import urllib 

def savePic(url): 
    uri="C:\Python27\Scripts\Photosurl2.jpg" 
    if url!="": 
     urllib.urlretrieve(url, uri) 

savePic("http://www-nass.nhtsa.dot.gov/nass/cds/GetBinary.aspx?ImageView&ImageID=491410290&Desc=Lookback+from+final+rest&Title=Scene+Photos+-+image1&Version=1&Extend=jpg") 

Jede Hilfe wird geschätzt.

+0

Die URL selbst zeigt keine Fotos hier! – j4hangir

+0

Diese URL ist ungültig, um ein Bild zu erhalten! –

+0

@ Gabriel und @ Jahangir. Sie können versuchen, die folgenden Schritte, um das tatsächliche Bild zu sehen und kopieren Sie dann diese URL und versuchen Sie es zu öffnen. Es öffnet sich in der ersten Instanz, aber nach 15-20 Minuten, wenn Sie versuchen, es wieder zu öffnen, werden Sie sehen, was Sie gerade sehen, indem Sie die URL kopieren und einfügen. Eine Sache mehr unterscheidet sich das Bild nach ImageID und Desc. Die folgenden Schritte sind: 1. http://www-nass.nhtsa.dot.gov/nass/cds/CaseForm.aspx?xsl=main.xsl&CaseID=491015675 .ID kann abweichen, aber die Schritte bleiben gleich. 2. Auf der linken Seite unter NASS case open crash overview, weiter im nächsten Beitrag - –

Antwort

0

Wenn Sie versuchen, einige HTTP-Code in Python zu implementieren, vergessen Sie nicht zu überprüfen, ob Sie diese HTTP-Anfragen mit curl oder wget ausführen können. Dadurch sparen Sie viel Zeit beim Debuggen eines Problems, das nicht in Ihrem Code enthalten ist.

Die haben auch sehr gute ausführliche Modi, die Ihnen einige Hinweise geben, was Sie vermissen.

Auch ältere Python-Entwickler verwenden die requests-Bibliothek anstelle der Urlib-Bibliothek.

PS. Die Anforderungsbibliothek ist einfacher zu verwenden als urllib.

Verwandte Themen