当我在浏览器中查看页面源(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(中文),但这一个我想,这已经是另一个话题了。
感谢所有回复的人。
答案 0 :(得分:1)
你没有明确地发出一个“内容类型”标题和一个标题末尾的空行,所以前几行可能会丢失;尝试在最终print
之前添加类似
print "content-type: text/plain"
print
除此之外,你在任何一种情况下得到的本质上都是一个很大的<script>
,附带一些额外的HTML - 这就是Firefox将在“查看源”页面中给你的所有内容,而获取和打印方法也会有围绕它的元数据,例如“doctype”(取决于您定位的HTML编辑器,这可能是也可能不是问题)。