我在这里使用此Google App Engine提取的代码是否有任何问题?

时间:2009-12-12 18:22:37

标签: html google-app-engine urlfetch

当我在浏览器中查看页面源(FireFox)(View-> Page Source)时,将其复制并粘贴到我的HTML编辑器中,我查看几乎相同的页面(在此示例中为www。 google.com)因为它出现在我的浏览器中。但是当我通过这段代码(通过Googles App Engines)获取HTML源代码时

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

将其复制并粘贴到我的HTML编辑器中,然后页面看起来完全不同。为什么会这样?代码有问题吗?

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

随访:

到目前为止(2009年12月13日星期日,格林威治标准时间下午1点01分),我收到了两条评论问题(来自 Aaron Christian P. < / strong>)和 Alex Martelli 的答案。

Aaron Christian P。都在询问Fire-Fox获取的源与Google-App-Engine获得的源之间究竟有何不同之处两者都通过相同的HTML编辑器显示。

我在这里上传了太多的屏幕截图:

One shows the Fire-Fox-obtained source

the other one shows Google-App-Engine-obtained source

当它们都通过“MS Front Page”编辑器显示时。

一个显而易见的差异是不同的编码:在Fire-Fox代码中,所有内容都以英语显示,而在Google-App-Engine代码中,我得到了很多不同的符号。

另一个不同之处是Google App Engine代码中页面顶部的一些额外行。我想,这就是 Alex Martelli 在他的回答中谈到的内容(“......获取和打印的方法也将围绕它进行元数据化......”)。

另一个细微的区别是,Google图片的框在一个代码中被拆分为多个框,而在另一个代码中则保持完整。

Alex Martelli 建议我使用此代码(如果我理解正确的话):

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

我已经尝试过,但在这种情况下根本没有显示任何内容。

感谢大家的回复,请继续回复 - 我真的希望看到这个问题最终得到解决。

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

随访:

好的,问题已经解决了。

我没有完全关注 Alex Martelli 的说明,因此提出了错误的代码。他是对的:

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

此代码准确显示所需内容 - 页面顶部没有其他行。

好吧,我仍然得到了奇怪的符号,但我发现这可能是谷歌的问题。问题是我目前在台湾,谷歌似乎意识到这一点,并自动从www.google.com(英文)切换到www.google.com.tw(中文),但这一个我想,这已经是另一个话题了。

感谢所有回复的人。

1 个答案:

答案 0 :(得分:1)

你没有明确地发出一个“内容类型”标题和一个标题末尾的空行,所以前几行可能会丢失;尝试在最终print之前添加类似

的内容
   print "content-type: text/plain"
   print

除此之外,你在任何一种情况下得到的本质上都是一个很大的<script>,附带一些额外的HTML - 这就是Firefox将在“查看源”页面中给你的所有内容,而获取和打印方法也会有围绕它的元数据,例如“doctype”(取决于您定位的HTML编辑器,这可能是也可能不是问题)。