Pregunta

class sss(webapp.RequestHandler):
  def get(self):
    url = "http://www.google.com/"
    result = urlfetch.fetch(url)    
    if result.status_code == 200:
        self.response.out.write(result.content)

Cuando cambio de código a la siguiente:

if result.status_code == 200:
        self.response.out.write(result.content.decode('utf-8').encode('gb2312'))

Se muestra algo extraño. ¿Qué debo hacer?

Cuando uso la siguiente:

self.response.out.write(result.content.decode('big5'))

La página es diferente con la que vi Google.com.

Como llegar Google.com que vi?

¿Fue útil?

Solución

Google es, probablemente, que cumple la norma ISO-8859-1. Al menos, eso es lo que me sirven para la User-Agent "AppEngine-Google; (+ http: // código .google.com / appengine )"(que UrlFetch usos). El valor de cabecera Content-Type es:

text/html; charset=ISO-8859-1

Así se debería utilizar:

result.content.decode('ISO-8859-1')

Si marca result.headers["Content-Type"], su código puede adaptarse a los cambios en el otro extremo. Generalmente puede pasar el juego de caracteres (ISO-8859-1 en este caso) directamente al método de decodificación Python.

Otros consejos

Como llegar google.com que vi?

Es probable que el uso de URLs relativas a las imágenes, JavaScript, CSS, etc., que no se está cambiando en direcciones URL absolutas en el sitio de Google. Para confirmar esto: los registros deben estar mostrando errores 404 ( "página no encontrada") como el navegador a la que usted está sirviendo intentos "sólo el HTML" localizar los recursos en relación con la dirección que no está suministrando

.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top