2009-08-09 55 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