2010-11-20 6 views
1

Mögliche Duplizieren:
How do you send a HEAD HTTP request in Python?Abrufen von nur HTTP-Header ohne den Inhalt in Python

I Pythons urllib und urllib2 bin mit einem automatischen Login zu tun. Ich verwende auch HTTPCookieProcessor, um die Handhabung der Cookies zu automatisieren. Der Code ist so etwas wie folgt aus:

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() 

Nun, der Punkt ist, dass ich will nicht die Bandbreite verschwenden in den Inhalt http://www.mysite.com/login/ Download, da alles, was ich tun möchte, die Cookies erhalten (die es in die Header). Außerdem leitet die Seite mich zu http://www.mysite.com/userprofile um, wenn ich mich das erste Mal anmelde (d. H. Das f.geturl() = http://www.mysite.com/userprofile).

Also gibt es eine Möglichkeit, dass ich vermeiden kann, den Inhalt in der ersten Anfrage abzurufen?

P.S. Bitte frag mich nicht, warum vermeide ich die kleine Netzwerknutzung der Übertragung des Inhalts. Obwohl der Inhalt klein ist, möchte ich ihn immer noch nicht herunterladen.

Antwort

0

Senden Sie einfach eine HEAD Anfrage einer GET Anfrage. Sie können dazu Pythons httplib verwenden.

Etwas wie folgt aus:

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

Aber dann würde ich die Anlage von HTTPCookieProcessor verlieren, nicht wahr? – siddhant3s

+0

@ siddhan3s Anstatt etwas zu beantworten, das bereits beantwortet wurde, finden Sie unter http://stackoverflow.com/questions/107405/how-do-you-send-a-head-http-request-in-python/2070916#2070916 Sie können urllib2 auch verwenden, um HEAD-Anfragen zu stellen. – Alex

Verwandte Themen