Можливо, використання 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 оброблятимуться автоматично. Подібно до вашого браузера :)
Я можу говорити лише з власного досвіду, і мій варіант використання файлів cookie на 99% полягає в тому, щоб отримати файл cookie, а потім потрібно надіслати його з усіма наступними запитами в цій сесії. Наведений вище код обробляє саме це, і робить це прозоро.
cookievals
, використовуйтеopener.addheaders.append(('Cookie', "; ".join('%s=%s' % (k,v) for k,v in cookievals.items())))
.