es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Error de codificación Unicode de Python Requests al adjuntar cookies.

Estoy utilizando Python Requests para acceder a una página HTTPS que contiene datos JSON. Paso 2 parámetros en la petición GET, que se enumeran a continuación:
verify = False
cookies = cookie

Sé que el parámetro verify = False se utiliza para omitir la verificación de certificación SSL, y el parámetro cookies = cookie se utiliza para pasar los valores de las cookies. En realidad, hay 2 valores de cookies que he colocado en un diccionario, y uno de los valores es muy largo, tal vez más de 300 caracteres. Pero cuando ejecuto mi código, obtengo este error:

UnicodeEncodeError: el códec ‘latin-1’ no puede codificar el carácter ‘\u2026’ en la posición 602: ordinal no está en el rango(256)

Mi código está adjunto a continuación:

import requests
test_url = “https://abc/cde”
cookie = {“cookie1″:”valor1 (10 caracteres)”, “cookie2″:”valor2 (300+ caracteres)”}
response = requests.get(test_url, verify=False, cookies=cookie)
print(response.content)

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    El mensaje de error indica que hay un problema con la codificación de un carácter Unicode en la respuesta. Esto podría deberse a que la codificación predeterminada utilizada por Python Requests es ‘latin-1’, que no admite ciertos caracteres Unicode. Para solucionar este problema, puedes intentar cambiar la codificación a ‘utf-8’ agregando la siguiente línea de código antes de realizar la solicitud:

    import requests
    test_url = "https://abc/cde"
    cookie = {"cookie1":"value1(10 caracteres)", "cookie2":"value2(300+ caracteres)"}
    requests.utils.default_headers()['User-Agent'] = 'Mozilla/5.0' # Para hacer que el servidor piense que la solicitud proviene de un navegador
    response = requests.get(test_url, verify=False, cookies= cookie, headers=headers)
    response.encoding='utf-8' # Agrega esta línea
    print(response.content)
    

    Al establecer la codificación en ‘utf-8’, deberías poder recibir la respuesta sin encontrar errores de codificación.

Comments are closed.