Question

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)

Quand je change le code à ceci:

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

Il montre quelque chose d'étrange. Que dois-je faire?

Quand j'utilise ceci:

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

La page est différente avec celle que je voyais Google.com.

Comment obtenir Google.com que j'ai vu?

Était-ce utile?

La solution

Google vous sert probablement ISO-8859-1. Au moins, c'est-ce qu'ils me servent à User-Agent « Google AppEngine-; (+ http: // Code .google.com / appEngine ) »(qui UrlFetch utilisations). La valeur d'en-tête Content-Type est:

text/html; charset=ISO-8859-1

Vous utilisez:

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

Si vous cochez result.headers["Content-Type"], votre code peut adapter aux changements à l'autre extrémité. Vous pouvez généralement passer le jeu de caractères (ISO-8859-1 dans ce cas) directement à la méthode de décodage Python.

Autres conseils

  

Comment obtenir google.com que je l'ai vu?

Il utilise probablement des URL par rapport aux images, javascript, CSS, etc, que vous ne changez pas en URL absolue dans le site de Google. Pour confirmer ceci: vos journaux devraient être montrant 404 erreurs ( « page introuvable ») que le navigateur que vous êtes au service de « juste le HTML » essaie de localiser les ressources adressées par rapport que vous n'êtes pas fournir

.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top