Есть ли что-то не так с этим кодом для извлечения URL-адресов Google App Engine, который у меня есть здесь?
-
19-09-2019 - |
Вопрос
Когда я просматриваю исходный код страницы в своем браузере (FireFox) (Просмотр-> Исходный код страницы), копирую его и вставляю в свой HTML-редактор, я просматриваю почти ту же страницу (в этом примере это www.google.com ) как это отображается в моем браузере.Но когда я получаю исходный код HTML с помощью этого кода (через Google App Engines)
from google.appengine.api import urlfetch
url = "http://www.google.com/"
result = urlfetch.fetch(url)
if result.status_code == 200:
print result.content
скопируйте его и вставьте в мой HTML-редактор, после чего страница будет выглядеть совсем по-другому.Почему это так?Что-то не так с кодом?
++++++++++++++++++++++++++++++
Последующие меры:
К этому моменту (воскресенье, 13 декабря 2009 г., 13:01 по Гринвичу, если быть точным) Я получил два комментария-вопроса (от Аарон и Кристиан П.) и один ответ от Алекс Мартелли.
И то, и другое Аарон и Кристиан П. спрашивают о том, в чем на самом деле разница между исходным кодом, полученным Fire-Fox, и исходным кодом, полученным Google-App-Engine, когда они оба отображаются через один и тот же HTML-редактор.
Здесь я тоже загрузил снимки экрана:
На одном изображен источник, полученный Огненной Лисой
И другой показывает Google-App-Engine-полученный источник
когда они оба отображаются через редактор “MS Front Page”.
Одно из отличий, которое совершенно очевидно, заключается в другой кодировке:В коде Fire-Fox все отображается на английском языке, в то время как в коде Google-App-Engine вместо этого я получаю множество различных символов.
Еще одно отличие заключается в нескольких дополнительных строках в верхней части страницы в коде Google App Engine.Я думаю, это то, что Алекс Мартелли об этом говорилось в его ответе (“... подход "выборка и печать" также будет содержать метаданные вокруг него ...”).
Еще одно незначительное отличие заключается в том, что поле для изображения Google разбито на несколько полей в одном коде, в то время как в другом оно остается целым.
Алекс Мартелли предложил мне использовать этот код (если я его правильно понял):
from google.appengine.api import urlfetch
url = "http://www.google.com/"
result = urlfetch.fetch(url)
if result.status_code == 200:
print "content-type: text/plain"
print
Я пробовал это, но в этом случае вообще ничего не отображается.
Спасибо вам всем за ваши ответы и, пожалуйста, продолжайте отвечать – я действительно хочу, чтобы эта проблема наконец была решена.
++++++++++++++++++++++++++++++
Последующие меры:
Хорошо, проблема была решена.
Я не смог полностью обратить свое внимание на Алекс Мартеллиинструкции и, следовательно, придумал неправильный код.Вот он правильный:
from google.appengine.api import urlfetch
url = "http://www.google.com/"
result = urlfetch.fetch(url)
if result.status_code == 200:
print "content-type: text/plain"
print
print result.content
Этот код отображает именно то, что необходимо - никаких дополнительных строк в верхней части страницы.
Ну, я все еще получаю странные символы, но я обнаружил, что это, вероятно, проблема Google.Дело в том, что в настоящее время я нахожусь на Тайване, и Google, похоже, знает об этом и автоматически переключается с www.google.com (который на английском) на www.google.com.tw (который на китайском), но это, я полагаю, уже другая тема.
Спасибо всем, кто откликнулся здесь.
Решение
Вы явно не ввели заголовок "тип содержимого" и пустую строку в конце заголовков, поэтому первые несколько строк, вероятно, будут потеряны;попробуйте добавить перед окончательным print
что - то вроде
print "content-type: text/plain"
print
Помимо этого, то, что вы получаете в любом случае, по сути, является большим <script>
с небольшим добавлением дополнительного HTML-кода - это все, что Firefox собирается предоставить вам на странице "просмотр исходного кода", в то время как подход "выборка и печать" также будет содержать метаданные вокруг него, например, "doctype" (в зависимости от того, на какой редактор HTML вы ориентируетесь, это может быть проблемой, а может и не быть).