11

How can I accept cookies in a python script?

1
  • Maybe you should be more specific. What are you trying to accomplish? Which framework are you using, if any? Commented Feb 8, 2009 at 16:33

6 Answers 6

19

Try this:

import urllib2 import cookielib jar = cookielib.FileCookieJar("cookies") opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(jar)) print "Currently have %d cookies" % len(jar) print "Getting page" response = opener.open("http://google.com") print response.headers print "Got page" print "Currently have %d cookies" % len(jar) print jar 

It should print

Currently have 0 cookies ... Currently have 2 cookies 

(Google always sets a cookie). You don't really need this much unless you want to save your cookies to disk and use them later. You should find that

urllib2.build_opener(HTTPCookieProcessor).open(url) 

Takes care of most of what you want.

More info here:

Sign up to request clarification or add additional context in comments.

Comments

6

The easiest way is to use requests library.

import requests url = 'http://www.google.com/doodles/' r = requests.get(url) print r.cookies 

1 Comment

This should be the accepted answer: short and sweet, and worked.
3

You might want to look at cookielib.

Comments

1

There's the cookielib library. You can also implement your own cookie storage and policies, the cookies are found in the set-cookie header of the response (Set-Cookie: name=value), then you send the back to a server in one or more Cookie headers in the request (Cookie: name=value).

Comments

1

It's unclear whether you want a client-side or a server-side solution.

For client-side, cookielib will work fine. This answer and a few web tutorials offer more in-depth explanations.

If this is a server-side problem, you should be using a framework that takes care of all the boilerplate. I really like how CherryPy and web.py handle them, but the API is pretty simple in any library.

Comments

1

I believe you mean having a Python script that tries to speak HTTP. I suggest you to use a high-level library that handles cookies automatically. pycurl, mechanize, twill - you choose.

For Nikhil Chelliah:

I don't see what's not clear here.

Accepting a cookie happens client-side. The server can set a cookie.

1 Comment

A server can also get cookies from the client. Then again, "accept" might only be a valid term for the client.