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)
当我将代码更改为:
if result.status_code == 200:
self.response.out.write(result.content.decode('utf-8').encode('gb2312'))
它表现出一些奇怪的东西。我该怎么办?
当我使用它时:
self.response.out.write(result.content.decode('big5'))
该页面与我看到Google.com的页面不同。
如何获得我看到的Google.com?
答案 0 :(得分:3)
Google可能会为您提供ISO-8859-1。至少,这就是他们为User-Agent“AppEngine-Google;(+ http://code.google.com/appengine)”(urlfetch使用)提供的服务。 Content-Type标头值为:
text/html; charset=ISO-8859-1
所以你会使用:
result.content.decode('ISO-8859-1')
如果您选中result.headers["Content-Type"]
,您的代码可以适应另一端的更改。您通常可以将字符集(在本例中为ISO-8859-1)直接传递给Python解码方法。
答案 1 :(得分:1)
如何获得我看到的google.com?
它可能使用图像,javascript,CSS等的相对URL,您不会将其更改为google网站的绝对URL。要确认这一点:您的日志应显示404错误(“找不到页面”),因为您所服务的浏览器“只是HTML”会尝试查找您未提供的相对地址资源。