2010-03-06 90 views
0

我正在處理html文檔,並且翻出表格解析它們,如果它們變成正確的表格。我對結果感到滿意 - 我的提取過程成功地將行標籤和列標題映射到95%以上的案例中,並且在我們無法識別問題並使用其他方法的情況下。有沒有比lxml更好的解析html表格的方法

在我對iternet的掃描中,我發現瀏覽器有一個非常強大的'引擎'來正確顯示htm頁面的內容,即使底層htm不正常。我們在解析表格時遇到的問題與不能從數據行中分離標題或者能夠將行標籤與一個或多個相鄰數據值分開,然後不能正確解析出相鄰數據值。 (我們可能有兩個數據值被映射到一個列標題而不是兩個相鄰的列標題,也就是說如果我有一個標題爲apple的列標題,然後一個標記爲香蕉,我可能會將值分配給香蕉的值爲'1125 12345' (或蘋果)列標題的輸出,而不必指定分配給香蕉蘋果和12345值1125。

正如我在開始 - 說我們拿到的時候是正確的95%,我們可以在告訴輸出的時候出現問題我開始認爲我們已經儘可能地使用邏輯和html推理來清理這些,所以我開始懷疑我是否需要一個新的方法

Is there一種利用瀏覽器的'引擎'來幫助解析器的方法。最終如果瀏覽器可以正確顯示列和行,以便它們在屏幕上正確顯示,然後有一些技術即使在行和列跨度不一致的情況下也能處理(例如)。

感謝您的任何意見

+0

您目前使用什麼方法「翻錄」表格? – 2010-03-06 21:45:44

+0

許多方法基本上都是加載所有表格,然後在某些條件下測試單元格的內容。我這樣做是因爲我發現它更有可能在沒有清理html的情況下處理表格而不是整個文檔。 – PyNEwbie 2010-03-06 22:35:25

+0

參見http://stackoverflow.com/questions/126131/python-library-for-rendering-html-and-javascript – 2012-01-26 04:08:53

回答

2

要「充分利用了瀏覽器的‘引擎’」,在這個時候你最好的賭注是毫無疑問的SeleniumRC - 但它的主要優點是在處理JavaScript的「一樣,瀏覽器會」(也有一些其他的選項);對於一張簡單邏輯上破壞的表格,雖然它在呈現時可能「看起來」確定,但瀏覽器(因此Selenium)可能與lxml或BeautifulSoup一樣無助。不過,可能值得您嘗試一下。

+0

@Alex謝謝,所以我必須繼續爲邊緣案例開發邏輯 – PyNEwbie 2010-03-06 23:54:31

2

事實上,瀏覽器引擎是在他們的HTML解析故意愚蠢的,假設他們得到的是隻能勉強正確的。 lxml和BeautifulSoup試圖模仿這種愚蠢的程度,所以它們是使用正確的工具。

相關問題