Perché il mio codice mostrato come disordinato, mentre non lo è? [chiuso]
-
04-10-2019 - |
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?
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
.