最近打算做一个Html解析的类,粗写了一个,大多数都解析了,可是发现现在的Html代码不是一般的不规范,无语啊。
我用的还是一个算是大型网站的网页做测试的,把不规范之处贴出来大家看看。这只是一部分,还有单引号,双引号只有一半的,单引号,双引号,没引号混用的,搞得我现在写的解析类还有一个没解决的问题,就是如果代码中只有标签开头,没有结尾怎么判断处理?
<table>
<tr>
<td>
<div class="ContentDiv">
<div id="MenuBg">
<div style="float:left">
<a>
商城</span></a>
</div><div style="float:left">
<a>
俱乐部</span></a>
</div>
</div>
</div>
</td>
</tr><tr>
<td>
<table>
<tr>
<td>
<table>
<tr>
<td height="35">
<table>
<tr>
<td align="right">
<table><tr></td></tr></table>
</td></tr>
</table>
</td>
</tr>缺少TR结尾
<tr>
<td>
<tr>
<td align="right">
<table><tr></td></tr></table>
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr><tr>
<td>
<TABLE>
<TR height="23">
<TD vAlign="top"></TD>
</TD>
<TD width="742" height="105" rowSpan="3">
<table>
<tr>
<td></></td>
</tr>
</table>
</TD>
</TR>
</TABLE>
</td>
</tr>
</table>

解决方案 »

  1.   

     哈哈  我看晕了。 这都是ide 害得 。 都成习惯了。 
     因为这是 系统生成的 ,修改时  不加整理。 
    唉 确实可叹啊。
      

  2.   

    呵还好我还保持着优良的CODEING习惯HOHOHO
      

  3.   

    你可以参考各个浏览器内核对这种情况的处理.MSDN有篇讲述IE内核Trident的up service的文章, 也有相关内容.
      

  4.   

    二次过滤啊,把<>之间的全部用正则去掉
      

  5.   

    同情lz, 无奈... 问问IE的解析器是怎么做的吧
      

  6.   

    如果html代码不规范,一般的爬虫的处理办法就只有采用模板了,就是对每种类型的网站定义一个采集规则的模板进行解析;你看下现在网络上一般的采集软件都是用的这种方法.
      

  7.   

    我也遇到這個問題了,解析幾個網站,沒一個能共用代碼。html都不同,所以都得為每個寫一個解析規則
      

  8.   

    这是不规范吗?
    哦.不符合html规范......
      

  9.   

    这种情况很常见啊 ,大点的网站都有自己的美工,
    而美工 大都不懂ASP.NET规则,只是按照HTML能通过的方式去做
    这样的结果在ASP.NET中看这些HTML代码 就会有很多问题啊。