仅检索没有Python内容的HTTP标头

时间:2010-11-20 06:10:58

标签: python urllib2

  

可能重复:
  How do you send a HEAD HTTP request in 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/的内容时浪费带宽,因为我想要做的就是接收cookie(它们在Headers中)。此外,我首次登录时,网站会将我重定向到http://www.mysite.com/userprofile(即f.geturl()= http://www.mysite.com/userprofile)。

那么有什么方法可以避免在第一个请求中获取内容吗?

P.S。请不要问我为什么要避免传输内容的小网络使用。虽然内容很小,但我仍然不想下载它。

1 个答案:

答案 0 :(得分:0)

只需发送HEAD个请求而不是GET个请求。你可以使用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()