Existe algo de errado com este código de consumo de url de mecanismo do Google App que eu tenho aqui?

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

Pergunta

Quando vejo a fonte da página no meu navegador (Firefox) (View-> Page Source), copie-a e cole-a no meu editor HTML, vejo quase a mesma página (neste exemplo, é www.google.com) como aparece no meu navegador. Mas quando eu recebo a fonte HTML através deste código (através do Googles App Motores)

from google.appengine.api import urlfetch
url = "http://www.google.com/"
result = urlfetch.fetch(url)
if result.status_code == 200:
   print result.content

Copie -o e cole -o no meu editor HTML, a página parece bem diferente. Por que é tão? Há algo errado com o código?

++++++++++++++++++++++++++++++

Acompanhamento:

Nesse momento (domingo, 13 de dezembro de 2009, 13:01, GMT, para ser preciso), recebi duas perguntas de comentários (de Aaron e Christian P.) e uma resposta de Alex Martelli.

Ambos Aaron e Christian P. estão perguntando sobre o que realmente é diferente entre a fonte obtida pelo Fire-Fox e a fonte obteve o Google-App-Engine quando ambos são exibidos pelo mesmo editor HTML.

Aqui eu carreguei capturas de tela também:

Um mostra a fonte obtenha de fogo-fox

E o outro mostra a fonte obteve a motor do Google-Appin

Quando ambos são exibidos através do editor "MS Front Page".

Uma diferença, que é bastante óbvia, é uma codificação diferente: no código Fire-Fox, tudo é exibido em inglês, enquanto no código do motor do Google-App eu recebo vários símbolos.

Outra diferença são algumas linhas adicionais na parte superior da página no código do mecanismo do Google App. Eu acho, é isso que Alex Martelli estava falando sobre sua resposta ("... a abordagem de busca e impressão terá metadados em torno dela também ...").

Mais uma pequena diferença é que a caixa para a imagem do Google é dividida em várias caixas em um código, enquanto ela permanece inteira no outro.

Alex Martelli sugeriu que eu usasse este código (se eu o entendesse corretamente):

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

Eu tentei, mas, neste caso, nada é exibido.

Obrigado a todos por suas respostas e, por favor, continue respondendo - eu realmente quero ver esse problema finalmente resolvido.

++++++++++++++++++++++++++++++

Acompanhamento:

Ok, o problema foi resolvido.

Eu não prestei toda a minha atenção para Alex MartelliAs instruções e, portanto, criaram um código errado. Aqui está ele certo:

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

Este código exibe exatamente o que é necessário - nenhuma linha adicional na parte superior da página.

Bem, ainda recebo os símbolos estranhos, mas descobri que provavelmente é o problema do Google. O problema é que estou atualmente em Taiwan, e o Google parece estar ciente disso e muda automaticamente de www.google.com (que é em inglês) para www.google.com.tw (que está em chinês), mas este Eu acho que já é outro tópico.

Obrigado a todos que responderam aqui.

Foi útil?

Solução

Você não emitiu explicitamente um cabeçalho de "tipo de conteúdo" e uma linha vazia no final dos cabeçalhos, para que as primeiras linhas provavelmente sejam perdidas; tente adicionar antes do final print algo como

   print "content-type: text/plain"
   print

Além disso, o que você está recebendo em ambos os casos é essencialmente um grande <script> Com um pouco de HTML extra ao seu redor-isso é tudo o que o Firefox lhe dará na página "View Source", enquanto a abordagem de busca e impressão terá metadados também, por exemplo, o "Doctype" (Dependendo do editor HTML que você está segmentando, isso pode ou não ser um problema).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top