Есть ли что-то не так с этим кодом для извлечения URL-адресов Google App Engine, который у меня есть здесь?

StackOverflow https://stackoverflow.com/questions/1894279

Вопрос

Когда я просматриваю исходный код страницы в своем браузере (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 вы ориентируетесь, это может быть проблемой, а может и не быть).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top