Почему мой код показан так же грязным, пока не так ли? [закрыто
-
04-10-2019 - |
Вопрос
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, что я видел?
Решение
Google, вероятно, обслуживает вам ISO-8859-1. По крайней мере, это то, что они служат мне для пользовательского агента "Appengine-Google; (+http://code.google.com/appengine.) "(какой urlfetch использует). Значение заголовка типа содержимого:
text/html; charset=ISO-8859-1
Итак, вы бы использовали:
result.content.decode('ISO-8859-1')
Если вы проверяете result.headers["Content-Type"]
, ваш код может адаптироваться к изменениям на другом конце. Как правило, вы можете передать орнамент (ISO-8859-1 в этом случае) непосредственно к методу Python Decode.
Другие советы
Как получить Google.com, что я видел?
Вероятно, используют относительные URL-адреса к изображениям, JavaScript, CSS и др., Что вы не меняетесь в абсолютные URL-адреса на сайте Google. Чтобы подтвердить это: ваши журналы должны отображаться 404 ошибок («страница не найдена»), что и браузер, к которому вы служите «просто HTML», пытается найти относительные адресованные ресурсы, которые вы не поставляете.