只有Firefox显示HTML代码而不是页面

时间:2011-11-17 21:43:28

标签: python html beautifulsoup simplehttpserver

我有这个复杂的问题,我无法找到答案。

我运行的是一个运行Python HTTPServer的网页。这些网页是在Beautiful Soup的帮助下在运行时创建的。问题是Firefox显示网页的HTML代码而不是实际页面?我真的不知道是谁造成了这个问题 - - Python HTTPServer - 美丽的汤 - HTML代码

无论如何,我复制了部分网页HTML: -

<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
 <head>
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
  <title>
   My title
  </title>
  <link href="style.css" rel="stylesheet" type="text/css" />
  <script src="./123_ui.js">
  </script>
 </head>
 <body>
  <div>
  Hellos
  </div>
 </body>
</html>

只是为了帮助你,以下是我已经尝试过的事情 - - 我确保Python HTTPServer将MIME标头作为text / html发送 - 只需复制和粘贴HTML代码就会显示正确的页面作为静态页面。我可以从这里看出问题出在HTTPServer端 - Firebug显示为空并且“此元素没有样式规则。您可以为它创建规则。”显示

我只是想知道错误是在Beautiful Soup还是HTTPServer或HTML?

谢谢, 阿米特

2 个答案:

答案 0 :(得分:2)

为什么要在文档顶部添加它?

<?xml version="1.0" encoding="iso-8859-1"?>

这将使浏览器认为整个文档是 XML 不是 XHTML 。删除该行应该使其正确呈现。我假设Firefox正在显示一个包含大量元素的页面,您可以展开/折叠它们以查看XML文档通常的内容,即使HTTP标头可能会说它是text / html。

答案 1 :(得分:0)

所以伙计们, 我终于解决了这个问题。原因是因为我没有发送内容类型为“text / html”的MIME标题(即使我认为我是)

在python HTTPServer中,在将任何内容写入文件之前,您总是这样做: -

self.send_response(301)
self.send_header("Location", self.path + "/")
self.end_headers()
# Once you have called the above methods, you can send the HTML to Client                                                          
self.wfile.write('ANY HTML CODE YOU WANT TO WRITE')
相关问题