後來運用正規式(Regular Expression)做分析擷取,不過有一個缺點就是維護不容易,
當原本要擷取的網頁異動時,便要全部重寫維護成本太高,
最近看了網路上的文章有人使用Xpath,才想到可以透過XML的特性去做分析擷取,
維護上也比較容易,不過要自己寫一個轉換的模組有些花時間,
既然自己想的到,浩瀚的網路一定有人做,
找了好幾款如:Html Agility Pack、Html2Xhtml、Tidy、MarkupConverter
不過效果都不盡理想,就要放棄的時候...出現曙光SGMLReader
這是今天要介紹的,使用很簡單,
如下程式碼所示:
XmlDocument FromHtml(TextReader reader) { // setup SGMLReader Sgml.SgmlReader sgmlReader = new Sgml.SgmlReader(); sgmlReader.DocType = "HTML"; sgmlReader.WhitespaceHandling = WhitespaceHandling.All; sgmlReader.CaseFolding = Sgml.CaseFolding.ToLower; sgmlReader.InputStream = reader; // create document XmlDocument doc = new XmlDocument(); doc.PreserveWhitespace = true; doc.XmlResolver = null; doc.Load(sgmlReader); return doc; }
看一下做了Sample抓出來的資料,如下圖
若真的想要自己做一個Dom的分析的話,可以參考Kelp的作品C# 分析 HTML 資料 - Mana Html Parser
P.S.文章轉載請附上出處
</br>
2011.10.29 By YC
沒有留言:
張貼留言