如何使抓取的HTML规范化

在数据采集时,处理不规范的HTML页面是件令人头疼的事。因为不规范的HTML页面往往会引起xpath解析失败,造成得不到正确的数据。

了解Firebug的人都知道,它的HTML视图下有一个巧妙的功能,能够自动修复不规范的HTML,以规范的形式展现。

例如,如下的一个不规范的HTML页面:

<table>

<tr>

  <td>name

  <td>age

<tr>

  <td>redice

  <td>25

</table>

 

我们看一下它在Firebug下的显示内容:

如何使抓取的HTML规范化

 

 

有没有能实现类似Firebug这种规范化HTML的Python库呢?

 

有。经过查找、测试,最终发现PyTidyLib库可以很好地实现这个功能。

 

http://cloud.github.com/downloads/countergram/pytidylib/pytidylib-0.2.1.tar.gz

 

下面是PyTidyLib库的一个测试:

 

>>> html = open('c:/html_invalid.html').read()

>>> print html

<table>

<tr>

<td>name

<td>age

<tr>

<td>redice

<td>25

</table>

>>> from tidylib import tidy_document

>>> document, errors = tidy_document(html)

>>> print document

<!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>

    <title></title>

  </head>

  <body>

    <table>

      <tr>

        <td>

          name

        </td>

        <td>

          age

        </td>

      </tr>

      <tr>

        <td>

          redice

        </td>

        <td>

          25

        </td>

      </tr>

    </table>

  </body>

</html>

 

 

 

特别说明:该文章为鲲鹏数据原创文章 ,你除了可以发表评论外,还可以转载到你的网站或博客,但是请保留源地址,谢谢!!(尊重他人劳动,你我共同努力)

你可能感兴趣的:(抓取,西安鲲之鹏,鲲鹏数据)