Только Firefox отображает HTML-код, а не страницу - PullRequest
0 голосов
/ 18 ноября 2011

У меня есть сложная проблема, на которую я не могу найти ответ.

У меня запущен HTTPServer Python, который обслуживает веб-страницы.Эти веб-страницы создаются во время выполнения с помощью Beautiful Soup.Проблема в том, что Firefox показывает HTML-код для веб-страницы, а не фактическую страницу?Я действительно не знаю, кто является причиной этой проблемы - Python HTTPServer - Beautiful Soup - HTML Code

В любом случае, я скопировал части веб-страницы 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?

Спасибо, Amit

Ответы [ 2 ]

2 голосов
/ 18 ноября 2011

Почему вы добавляете это вверху документа?

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

Это заставит браузер думать, что весь документ XML и , а не XHTML . Удаление этой строки должно сделать ее правильной. Я предполагаю, что Firefox отображает страницу с кучей элементов, которые можно развернуть / свернуть, чтобы увидеть содержимое, как это обычно бывает для документа XML, даже если заголовки HTTP могут сказать, что это text / html.

0 голосов
/ 18 ноября 2011

Итак, ребята, я наконец-то решил эту проблему.Причина была в том, что я не отправлял заголовок MIME (хотя я и думал) с типом содержимого "text / html"

В 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')
...