2016-12-05 6 views
0

を要求したのPythonを使用してバイナリファイルをダウンロードし、私は、出力私は外部ソースからファイルをダウンロードする必要があるモジュール

<url to download the binary data> 
\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0f\xcb\x00\x00\x1e\x00\x1e\x00\xbe\x07\x00\x00.\xcf\x05\x00\x00\x00' 
の下に取得していますURLに

import requests 
response = requests.get('<external url', auth=('<username>', '<password>')) 
data = response.json() 
html = data['list'][0]['attachments'][0]['url'] 
print (html) 
data = requests.get('<API URL to download the attachment>', auth=('<username>', '<password>'), stream=True) 
print (data.content) 

をログインする基本認証を使用しています

同じセッション内でword文書をダウンロードするURLが必要です。

+0

その音によって、最初のステップはうまくいきます(あなたが望むURLを返しますか?)。あなたがしなかったのは、2番目の応答からデータを抽出することです。 "data = requests.get( '添付ファイルをダウンロードするAPI URL'、stream = True)はおそらく" data = requests.get( '<添付ファイルをダウンロードするAPI URL'、stream = True) .text "?これを試して、それでもまだ動作しない場合は質問を編集してください。 –

+1

http://docs.python-requests.org/en/master/user/advanced/#session-objectsそして2回目のリクエストで 'auth'をまあ? – Jasper

+0

Requests Quickstartのドキュメントをもう一度お読みになることをお勧めします。返されたResponseオブジェクトから_binary_データを取得するには、その['.content'](http://docs.python-requests.org/ja/master/user/quickstart/#binary-response-content)属性にアクセスする必要があります。 –

答えて

0

あなたが直接あなたがshutil.copyfileobj()を使用することができ、ファイルをダウンロードします:

https://docs.python.org/2/library/shutil.html#shutil.copyfileobj 

あなたはすでにあなたがファイルライクオブジェクトを取り戻すために必要なものであるrequestsstream=Trueを渡しています。ソースとしてcopyfileobj()に渡してください。私はそれがあるとして、ファイルをダウンロードすることができる午前

import requests 
import shutil 

response = requests.get('<url>', auth=('<username>', '<password>')) 
data = response.json() 
html = data['list'][0]['attachments'][0]['url'] 
print (html) 
data = requests.get('<url>', auth=('<username>', '<password>'), stream=True) 
with open("C:/myfile.docx", 'wb') as f: 
    data.raw.decode_content = True 
    shutil.copyfileobj(data.raw, f) 

0

作業溶液。

関連する問題