0

Download Ich versuche, die PDF-Datei von diesen link mit Python 2.7 Anfragen zum Herunterladen:Antwort leer ist, während ein PDF-Formular amazonaws

https://ap-prod-ddc-stack-content.s3.amazonaws.com/devtestbed-prod-01/ABC000128CEC2.pdf?AWSAccessKeyId=AKIAJZ2VLLVH5FAWOGYA&Expires=1466500635&Signature=itUWZwiOiWwH%2BPihTYMjoq1URFw%3D

import requests 
headers={ 
    'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.107 Safari/537.36' 
    } 
download_url="https://ap-prod-ddc-stack-content.s3.amazonaws.com/devtestbed-prod-01/ABC000128CEC2.pdf?AWSAccessKeyId=AKIAJZ2VLLVH5FAWOGYA&Expires=1466500635&Signature=itUWZwiOiWwH%2BPihTYMjoq1URFw%3D" 
response= requests.get(download_url,headers=headers) 
print response 
print "##################" 
print response.content 

In der Antwort von GET Anfrage i bekomme Code aber der Inhalt ist leer.

Was ich in meinem Code vermisse.

+0

Ich kann das nicht reproduzieren. Der Code funktioniert gut für mich. – oxalorg

+0

was ist Inhalt von response.content – prakash

+0

der binäre Inhalt der pdf. 'content' ist für Binärdateien. 'text' ist für Textdateien. – oxalorg

Antwort

2

Alles, was Sie als nächstes tun müssen, ist, den Inhalt in der Datei als Bytes zu speichern (mit 'wb' Flag) und nicht als String, weil der Inhalt Byte-Code ist.

Fügen Sie diese bis zum Ende des Codes:

with open('PATH\downloaded.pdf', 'wb') as file: 
    file.write(response.content) 

HINWEIS: Ich python3.4 verwendet und es funktionierte für mich.

+0

danke, aber können Sie mir sagen, wie Sie wissen, dass Inhalt Byte-Code ist – prakash

+0

Gern geschehen. Ich hatte 2 Indikatoren: Erstens, wenn Sie den Inhalt drucken, druckt "b ...." und das "b" ist der Hinweis, dass diese Zeichenfolge eine Byte-Zeichenfolge ist. Zweitens, gibt es weitere Informationen hier: http://docs.python-requests.org/en/master/user/quickstart/#response-content –

+0

"wie Sie wissen, dass Inhalt ist Byte-Code" – prakash