2010-11-20 2 views
1
にコンテンツなし

を唯一のHTTPヘッダを取得する可能性の重複:
How do you send a HEAD HTTP request in Python?は、Python

私は、自動ログインを行うにはPythonのurllibはとurllib2のを使用しています。また、HTTPCookieProcessorを使用してCookieの処理を自動化しています。コードは次のように多少です:

o = urllib2.build_opener(urllib2.HTTPCookieProcessor()) 
# assuming the site expects 'user' and 'pass' as query params 
p = urllib.urlencode({ 'username': 'me', 'password': 'mypass' }) 
# perform login with params 
f = o.open('http://www.mysite.com/login/', p) 
data = f.read() 
f.close() 
# second request 
t = o.open('http://www.mysite.com/protected/area/') 
data = t.read() 
t.close() 

さて、ポイントは私がやりたいすべてがであるクッキーを(受信であるので、私は、http://www.mysite.com/login/の内容をダウンロードするには、帯域幅を無駄にしたくないということですヘッダー)。また、最初にログインしたときにサイトがhttp://www.mysite.com/userprofileにリダイレクトされます(つまり、f.geturl()= http://www.mysite.com/userprofile)。

最初のリクエストでコンテンツを取得できないような方法はありますか?

P.S.なぜ私はコンテンツを転送する小さなネットワークの使用を避けているのですか私に尋ねないでください。コンテンツは小さいですが、私はまだそれをダウンロードしたくありません。

答えて

0

GETのリクエストinstadをHEADに送信してください。 Pythonのhttplibを使ってそれを行うことができます。

このような何か:

import httplib, urllib 
    creds = urllib.urlencode({ 'username': 'me', 'password': 'mypass' }); 
    connection = httplib.HTTPConnection("www.mysite.com") 
    connection.request("HEAD", "/login/", creds) 
    response = connection.getresponse() 
    print response.getheaders() 
+0

しかし、その後、私は右、HTTPCookieProcessorの機能を失うことになりますか? – siddhant3s

+0

@ siddhan3s既に回答済みのものに答えるのではなく、この回答を参照してください。http://stackoverflow.com/questions/107405/how-do-you-send-a-head-http-request-in-python/2070916#2070916 urllib2を使用してHEADリクエストを作成することもできます。 – Alex