Domanda

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)

Quando cambio codice a questo:

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

Si mostra qualcosa di strano. Cosa devo fare?

Quando uso questo:

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

La pagina è diverso con quello che ho visto Google.com.

Come arrivare Google.com che ho visto?

È stato utile?

Soluzione

Google è probabilmente scontando si ISO-8859-1. Almeno, questo è ciò che mi servono per l'User-Agent "AppEngine-Google; (+ http: // codice .google.com / appengine )"(che UrlFetch usi). Il valore Content-Type intestazione è:

text/html; charset=ISO-8859-1

Quindi, si può usare:

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

Se si controlla result.headers["Content-Type"], il codice può adattarsi ai cambiamenti sull'altra estremità. È generalmente possibile passare il set di caratteri (ISO-8859-1 in questo caso) direttamente al metodo di decodifica Python.

Altri suggerimenti

  

Come arrivare google.com che ho visto?

E 'probabilmente utilizzando gli URL relativi a immagini, JavaScript, CSS, ecc, che non si sta trasformando in URL assoluti nel sito di Google. A conferma di questo: il vostro log devono essere mostrando errori 404 ( "pagina non trovata") come il browser che si sta servendo "solo l'HTML" cerca localizzare il relativo risorse-indirizzata che non state fornendo

.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top