用于数据挖掘的工具手写html

时间:2009-08-09 19:54:54

标签: html regex parsing

我需要将一个大型网站从完全由人类编写的静态HTML转换为适当的关系数据。首先出现了大量的表(每个页面不一定相同),然后是这样的代码:

<a name=pidgin><font size=4 color=maroon>Pidgin</font><br></a>
<font size=2 color=teal>Author:</font><br>
<font size=2>Sean Egan</font><br>
<font size=2 color=teal>Version:</font><br>
<font size=2>2.6.8</font><br>
<font size=2><a href="http://pidgin.im/"><br>
    <img src="images/homepage.jpg"></a>
</font><br>
<br><br><br>

<a name=psi><font size=4 color=maroon>Psi</font><br></a>
<font size=2 color=teal>Version:</font><br>
<font size=2>0.13</font><br>
<font size=2 color=teal>Screenshots:</font><br>
<a href="images/screenshots/psi/1.jpg">
    <img src="images/screenshots/psi/1_s.jpg">
</a>
<a href="images/screenshots/psi/2.jpg">
    <img src="images/screenshots/psi/2_s.jpg">
</a><br>
<br><br><br>

再一些表格。我已经尝试过使用HTML解析器并寻找[name](一个CSS选择器),但我总是丢失一些条目:有时,由于平民编写的非常好的html,它认为某些条目在每个内部其他而不是平面列表。现在我正在使用一些Vim正则表达式组合成一个函数,将这个代码转换为XML,但这也不是一个银弹:大多数输出​​文件格式不正确,因为有些HTML插入。

所以我想知道做这样的任务有哪些工具?

2 个答案:

答案 0 :(得分:3)

要做的第一件事就是通过像HTML Tidy之类的工具抛出输入HTML,以至少确保它是有效的(X)HTML。然后我会使用某种基于dom的解析(而不是reg-ex)来完成代码。

答案 1 :(得分:1)

如果您对Python感到满意,则会创建BeautifulSoup来解决此问题:

“你没有写那个糟糕的页面。你只是想从中获取一些数据。”

我之前使用过BeautifulSoup来做这种工作,而且非常好。