0

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

我有一个运行网页的 Python HTTPServer。这些网页是在 Beautiful Soup 的帮助下在运行时创建的。问题是 Firefox 显示网页的 HTML 代码而不是实际页面?真不知道是谁造成了这个问题——Python HTTPServer——Beautiful Soup——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 中?

谢谢,阿米特

4

2 回答 2

2

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

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

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

于 2011-11-17T21:51:09.927 回答
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')
于 2011-11-18T16:39:05.277 回答