後來運用正規式(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

沒有留言:
張貼留言