requests from example español python urllib2

from - python: urllib2 cómo enviar cookies con solicitud de urlopen



urllib.request.request python 3 example (4)

Cookie es solo otro encabezado HTTP.

import urllib2 opener = urllib2.build_opener() opener.addheaders.append((''Cookie'', ''cookiename=cookievalue'')) f = opener.open("http://example.com/")

Consulte ejemplos de urllib2 para conocer otras formas de agregar encabezados HTTP a su solicitud.

Hay más formas de manejar las cookies. Algunos módulos como cookielib intentan comportarse como un navegador web: recuerde qué cookies recibió previamente y vuelva a enviarlos automáticamente en las siguientes solicitudes.

Estoy tratando de usar urllib2 para abrir la url y enviar texto de cookie específico al servidor. Por ejemplo, quiero abrir el sitio Resuelva problemas de ajedrez , con una cookie específica, por ejemplo, búsqueda = 1. ¿Cómo lo hago?

Estoy tratando de hacer lo siguiente:

import urllib2 (need to add cookie to the request somehow) urllib2.urlopen("http://chess-problems.prg")

Gracias por adelantado


Es posible que desee echar un vistazo a la excelente biblioteca HTTP Python llamada Requests . Hace que cada tarea que involucre HTTP sea un poco más fácil que urllib2. De la sección Cookies de la guía de inicio rápido:

Para enviar sus propias cookies al servidor, puede usar el parámetro cookies:

>>> cookies = dict(cookies_are=''working'') >>> r = requests.get(''http://httpbin.org/cookies'', cookies=cookies) >>> r.text ''{"cookies": {"cookies_are": "working"}}''


Tal vez usar cookielib.CookieJar puede ayudarte. Por ejemplo, al publicar en una página que contiene un formulario:

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()

EDITAR:

Después del comentario de Piotr, elaboraré un poco. De los documentos:

La clase CookieJar almacena cookies HTTP. Extrae las cookies de las solicitudes HTTP y las devuelve en respuestas HTTP. Las instancias de CookieJar caducan automáticamente y contienen cookies cuando es necesario. Las subclases también son responsables de almacenar y recuperar las cookies de un archivo o base de datos.

Entonces, cualquiera sea la solicitud que haga con su instancia de CookieJar , todas las cookies se manejarán de forma automática. Un poco como tu navegador :)

Solo puedo hablar por mi propia experiencia y mi 99% de casos de uso para cookies es para recibir una cookie y luego enviarla con todas las solicitudes posteriores en esa sesión. El código anterior maneja solo eso, y lo hace de manera transparente.


Use cookielib . La página de documento vinculada proporciona ejemplos al final. También encontrarás un tutorial here .