2012-05-23 52 views
0

我正在寫一個搜索引擎,去我所有的公司分支機構網站解析HTML並將它們存儲在數據庫中。這些網站真的很舊,並且在100000個網站中不符合html標準,大約有25%的網站有不好的html,這使得它很難分析。我需要編寫一個c#代碼來修復不良的html,然後解析這些內容或者提出一個解決上述問題的解決方案。如果你正在想法,一個實際的提示或代碼片段將有所幫助。如何解析錯誤的HTML?

+0

http://stackoverflow.com/questions/4587727/screen-scraping-html-with-c-sharp – Ani

+0

可能的重複我知道Wordpress有一個自動正確的html代碼,你可以查看它的源代碼,看看如何他們這樣做 - 並嘗試相同的邏輯 –

+0

你的意思是由不良的HTML?如果標籤沒有關閉,並且這樣的東西,我認爲解析將是一場噩夢。 –

回答

4

只需使用Html Agility Pack。這是非常好的解析錯誤的HTML代碼

+0

+1用於HAP解析格式不正確的HTML。 – Oded

+0

-1 HAP:它'解析'它,但我已經試過它的許多頁面得到完全錯誤的DOM模型。 –

1

人們通常使用某種形式的啓發式驅動的tag soup解析器。

E.g.對於

這些大多隻是詞法分析器,即盡最大努力從所有隨機符號構建AST。

1

使用一個tagsoup解析器,我相信是one for C#。然後,您可以將DOM序列化爲一個或多或少有效的HTML,具體取決於該分析器是否符合HTML DTD。或者,您可以使用HTML Tidy,這將清除至少最糟糕的故障。

正則表達式不適用於此任務。