当我在“Google App Engine SDK”的帮助下在我的计算机上运行此代码时,它会在我的浏览器中显示Google主页的HTML代码:
from google.appengine.api import urlfetch
url = "http://www.google.com/"
result = urlfetch.fetch(url)
print result.content
如何让它显示页面本身?我的意思是我希望在浏览器中看到该页面的方式与互联网用户通常会看到的一样。
更新1:
我看到我收到了一些看起来有点复杂的问题,虽然我完全记得我能够做到这一点,而且非常简单,除了我不记得我在这段代码中究竟改变了什么。
也许,我没有详细说明我如何运行此代码以及我在哪里找到它。那么,让我告诉你我做了什么。我只在我的计算机上安装了Python 2.5,然后下载了“Google App Engine SDK”并安装了它。按照“GAE”页面(http://code.google.com/appengine/docs/python/gettingstarted/helloworld.html)上的说明创建了一个目录,并将其命名为“My_test”,然后在其中创建了一个“my_test.py”,其中包含我在问题中提到的那小段代码。
然后,继续按照上述说明操作,我在其中创建了一个“app.yaml”文件,其中提到了我的“my_test.py”文件。之后在“Google App Engine Launcher”中找到“My_test”目录,然后单击“运行”按钮,然后单击“浏览”。然后,在我的网络浏览器中访问了此网址http://localhost:8080/后,我看到了结果。
我当然记得我能够以这种方式在我的浏览器中显示任何页面,而且非常简单,除了我不记得我在代码中究竟改变了什么(这是一个小小的改变)。现在,我只能看到页面的原始HTML代码,而不是页面本身。
更新2:
(此更新是我对wescpy的回复)
你好,wescpy !!!我已经尝试过你的更新代码,而且那里的东西效果不好。也许,这是因为我没有使用我应该用于此代码的某个框架。请看一下这个屏幕截图(我猜您需要右键单击此图像以更好的分辨率查看它): alt text http://roundcan.narod.ru/some_pics/33.jpg
答案 0 :(得分:1)
不是那么容易,你必须解析内容并相对于图像和javascripts的绝对路径进行调整 无论如何,试一试添加正确的Content-Type:
from google.appengine.api import urlfetch
url = "http://www.google.com/"
result = urlfetch.fetch(url)
print 'Content-Type: text/html'
print ''
print result.content
答案 1 :(得分:1)
一个更完整的例子看起来像这样:
from google.appengine.ext import webapp
from google.appengine.ext.webapp.util import run_wsgi_app
from google.appengine.api import urlfetch
class MainHandler(webapp.RequestHandler):
def get(self):
url = "http://www.google.com/"
result = urlfetch.fetch(url)
self.response.out.write(result.content)
application = webapp.WSGIApplication([
('/', MainHandler),
], debug=True)
def main():
run_wsgi_app(application)
if __name__ == '__main__':
main()
但正如其他人所说,这并不容易,因为你不在服务器的域中,这意味着由于缺少静态内容,页面可能不看起来正确(JS,CSS)和/或图像)...除非使用完整的路径名或者所需的一切都嵌入到页面本身中。
更新1:
如前所述,您不能只下载HTML源代码并期望正确呈现内容,因为您无需访问静态数据。如果你真的想要渲染它,因为它只是重定向......这是修改后的代码片段:
from google.appengine.ext import webapp
from google.appengine.ext.webapp.util import run_wsgi_app
from google.appengine.api import urlfetch
class MainHandler(webapp.RequestHandler):
def get(self):
url = "http://www.google.com/"
self.redirect(url)
application = webapp.WSGIApplication([
('/', MainHandler),
], debug=True)
def main():
run_wsgi_app(application)
if __name__ == '__main__':
main()
更新2:
对不起!这是一个剪切粘贴错误。现在尝试一下。
答案 2 :(得分:0)
特殊字符,例如<>等等很可能被编码,您必须再次解码它们以便浏览器将其作为代码进行插入。