在python中解析损坏的html页面

时间:2012-12-26 08:22:12

标签: python html-parsing beautifulsoup lxml

我正在尝试解析一个破坏的html页面,该页面在anther注释中有注释,所有着名的htmlparsers如beautifulsoup,lxml和HTMLParser都会出现语法错误。以下是代码。如何忽略损坏代码的部分并解析页面的其余部分?

<html xmlns="http://www.w3.org/1999/xhtml"><head>

<script language="JavaScript">
<!--
     function setTimeOffsetVars (Link) { 
   // code removed
 } 

<!-- Image Preloader - takes an array of images to preload --> 
    function warningCheck(e, warnMsg) {
   // code removed
}
-->
</script>

</head>

<body topmargin="0" leftmargin="0" rightmargin="0" bottommargin="0" marginwidth="0" marginheight="0">
<!-- lot of useful code -->
</body></html>

2 个答案:

答案 0 :(得分:3)

如果你知道问题是什么,你可以预处理:首先使用像regexps这样的原始方法去除有问题的内部注释,然后用真正的解析器命中它。

答案 1 :(得分:1)

这个html我没有错误。我尝试过beautifulsoup4和lxml。

from bs4 import BeautifulSoup
soup = BeautifulSoup(s)
print soup.prettify()


<html xmlns="http://www.w3.org/1999/xhtml">
 <head>
  <script language="JavaScript">
   &lt;!--
     function setTimeOffsetVars (Link) { 
   // code removed
 } 

&lt;!-- Image Preloader - takes an array of images to preload --&gt; 
    function warningCheck(e, warnMsg) {
   // code removed
}
--&gt;
  </script>
 </head>
 <body bottommargin="0" leftmargin="0" marginheight="0" marginwidth="0" rightmargin="0" topmargin="0">
  <!-- lot of useful code -->
 </body>
</html>