2017-03-05 2 views
1

ich von einem Untertitel herunterladen möchten http://www.turkcealtyazi.org/sub/670264/fantastic-beasts-and-where-to-find-them.htmlGet-Datei aus einer PHP-Seite mit Python

Es gibt eine Taste, die auf „down.php“ leitet und startet den download.This das ist HTML-Code der Taste:

<form method="post" action="/down.php" > 
     <div style="text-align:center"> 
       <input type="hidden" name="idid" value="670441"> 
       <input type="hidden" name="altid" value="670264"> 
       <input type="hidden" name="sidid" value="8a8ed56bafbf7df631e367f1289eb046"> 

       <button type="submit" class="altIndirButton"> 
        <span class="altIndir1"></span> 
       </button> 
     </div> 
</form> 

Dies ist mein Code, es herunterlädt und speichert die Datei ohne Fehler aber die heruntergeladene ZIP-Datei ist immer beschädigt.

import requests 

def saveDisc(text): 
    f = open("subtitle.zip","w") 
    f.write(text) 
    f.close() 

data = {'idid': "670441", 'altid':"670264",'sidid':"8a8ed56bafbf7df631e367f1289eb046"} 
response = requests.post('http://www.turkcealtyazi.org/down.php', data=data) 

print response.headers.get("Content-disposition") #output=attachment; filename=670264-Fantastic-Beasts-and-Where-to-Find-Them-2016-1CD-23.976fps-TR-29kB-TurkceAltyazi-org.zip 
print len(response.content) #output=30539 

saveDisc(response.content) 

Warum ist meine Zip-Datei beschädigt?

Downloaded files comparison, archive is corrupt

Antwort

1

Sie die Datei in w + Modus zu öffnen, so dass er interpretiert sie als Textdatei!

Python unter Windows unterscheidet zwischen Text- und Binärdateien; Die Zeilenendezeichen in Textdateien werden beim Lesen oder Schreiben von Daten automatisch leicht geändert . Diese Änderung der Datei hinter den Kulissen ist für ASCII-Textdateien in Ordnung, aber beschädigt Binärdaten wie diese in JPEG- oder EXE-Dateien.

Verwenden Sie den Modus wb + für Binärdateien. Gefällt mir:

f = open("subtitle.zip","wb+") 
+0

Vielen Dank, ich habe versucht, dies für Stunden zu beheben. Es dauerte nur 30 Sekunden für dich, du bist großartig. – yasinfy

Verwandte Themen