2009-08-09 71 views
0

我需要将完全由人类编写的静态html转换成适当的关系数据。首先出现大量表格(每页不一定相同),然后是这样的代码:用于手写数据挖掘的工具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解析器并寻找[名称](一个CSS选择器),但我总是丢失一些条目:有时,由于平民编写的非蠕虫病的html,它认为有些条目在每个其他而不是平面列表。现在我正在使用一些Vim regexes分组成一个函数,将这些代码转换成XML,但这也不是一个银色的子弹:大多数输出​​文件不是正确的,因为一些HTML滑入。

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

回答

1

如果您熟悉的Python,BeautifulSoup是为了准确地解决这个问题:

“你没写那可怕的页面你只是想获得一些数据出来。”

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

+0

谢谢,但我已经尝试解析。不是太糟糕了,但是原始代码的结构对此不太友好。正如你可以在我的代码示例中看到的那样,它是一个扁平列表,而不是嵌套在div或表中的东西。 – 2009-08-09 20:16:53

3

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

+0

谢谢,但HTML Tidy本身并没有帮助:在我需要解析的代码中打开和关闭标记的顺序非常混乱,以至于每次都以不同的方式嵌套。这是它在DOM解析器中结束的方式。 – 2009-10-19 21:03:10