2016-11-21 4 views
0

私はいくつかの条件でいくつかのファイルをダウンロードするマネージャーを書くためにPythonを使用しています。問題は、応答ヘッダーに対して条件を実行することです。PythonでURLコンテンツをダウンロードせずに応答ヘッダを取得する方法はありますか?

以下の例は、私が今やっていることを簡略化したものです。最初にファイルをダウンロードしてから、ヘッダーに含まれる名前が以前定義されたリストに含まれているかどうかをテストします。

実際のケースでは膨大な時間を要するコンテンツをダウンロードせずに応答を得る方法があるかどうかを知りたいと思います。

import requests 

# The line below download the file, but I'd like not to do it. 
req = requests.get('http://some_url.com/some_file') 

# Get the name of the file to test if it's the right file. 
r = re.search(r'filename="(.*)";', req.headers['Content-Disposition']) 

filename = None 

# If the filename is present in the headers... 
if r.groups(): 
    filename = r.groups()[0] 

# If the filename is in an authorized list... 
if filename in [...]: 
    # Process req.content 

答えて

6

あなたはrequests.head()の代わりrequests.get()を使用することができます。

+0

注意:これは、ボディが返されないことを除いて、**は 'GET'リクエストと**同一であると思われる' HEAD'リクエストを送信します。これはサーバーが正しく処理しているかどうかによって異なります。 'HEAD'リクエストのために異なるヘッダを返すことができます。また、GETリクエストで実際のコンテンツをダウンロードすることを決定した場合は、2つの* HTTPリクエストが発生します(しかし、これは批評家ではありません)。 – deceze

+0

@eddiemそれは簡単ですか? :) – srodriguex

関連する問題