Я пытаюсь использовать urllib2, чтобы открыть URL-адрес и отправить конкретный текст cookie на сервер. Например, я хочу открыть сайт Решить шахматные задачи с помощью определенного файла cookie, например search = 1. Как это сделать?
Я пытаюсь сделать следующее:
import urllib2
(need to add cookie to the request somehow)
urllib2.urlopen("http://chess-problems.prg")
заранее спасибо
cookievals
, используйтеopener.addheaders.append(('Cookie', "; ".join('%s=%s' % (k,v) for k,v in cookievals.items())))
.Возможно, вам поможет cookielib.CookieJar . Например, при публикации на странице, содержащей форму:
import urllib2 import urllib from cookielib import CookieJar cj = CookieJar() opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj)) # input-type values from the html form 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 будут обрабатываться автоматически. Как ваш браузер :)Я могу говорить только по собственному опыту, и мой 99% вариант использования файлов cookie - это получение файла cookie, а затем необходимость его отправки со всеми последующими запросами в этом сеансе. Приведенный выше код обрабатывает именно это, и делает это прозрачно.
источник
CookieJar
экземпляр будет обрабатывать его для меня на всех соответствующих доменах.Возможно, вы захотите взглянуть на отличную библиотеку HTTP Python под названием Requests . Это делает каждую задачу, связанную с HTTP, немного проще, чем urllib2. Из раздела « Файлы cookie » краткого руководства:
>>> cookies = dict(cookies_are='working') >>> r = requests.get('http://httpbin.org/cookies', cookies=cookies) >>> r.text '{"cookies": {"cookies_are": "working"}}'
источник
urllib3
, он поддерживает объединение соединений, таких как urllib3, и сохраняет файлы cookie, заголовки - смRequests Session
. Это прекрасно!Используйте Cookielib . На связанной странице документации в конце приведены примеры. Вы также найдете учебник здесь .
источник
Этот ответ не работает, так как
urllib2
модуль был разделен на несколько модулей в Python 3. Вам необходимо сделатьfrom urllib import request opener = request.build_opener() opener.addheaders.append(('Cookie', 'cookiename=cookievalue')) f = opener.open("http://example.com/")
источник