Возможно, вам поможет cookielib.CookieJar . Например, при публикации на странице, содержащей форму:
import urllib2
import urllib
from cookielib import CookieJar
cj = CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
formdata = { "username" : username, "password": password, "form-id" : "1234" }
data_encoded = urllib.urlencode(formdata)
response = opener.open("https://page.com/login.php", data_encoded)
content = response.read()
РЕДАКТИРОВАТЬ:
После комментария Петра я немного уточню. Из документов:
Класс CookieJar хранит файлы cookie HTTP. Он извлекает файлы cookie из HTTP-запросов и возвращает их в HTTP-ответах. Экземпляры CookieJar автоматически удаляют содержащиеся файлы cookie при необходимости. Подклассы также отвечают за хранение и получение файлов cookie из файла или базы данных.
Таким образом, какие бы запросы вы ни делали со своим CookieJar
экземпляром, все файлы cookie будут обрабатываться автоматически. Как ваш браузер :)
Я могу говорить только по собственному опыту, и мой 99% вариант использования файлов cookie - это получение файла cookie, а затем необходимость его отправки со всеми последующими запросами в этом сеансе. Приведенный выше код обрабатывает именно это, и делает это прозрачно.
cookievals
, используйтеopener.addheaders.append(('Cookie', "; ".join('%s=%s' % (k,v) for k,v in cookievals.items())))
.