天天看點

網頁采集分析的幾個有用工具

1、HtmlParser入門指南

http://time-is-life.cnblogs.com/articles/335554.html

2、

SgmlReader

http://code.msdn.microsoft.com/SgmlReader

3、使用XPath解析HTML擷取網頁内容

有的時候,我們開發的應用需要抓取網頁的内容借為己用,如QQ網站的天氣資訊和新聞等,和Google等搜尋爬蟲的機制不同之處在于抓取目标的頁面對開發人員而言是已知的。我們有理由避免過多的使用正規表達式的繁冗分析過程,如果能夠在擷取目标網頁的HTML之後通過DOM來解析HTML将是一件非常愉快的事情。這裡會遇到兩個問題,DOM操作隻能在用戶端通過Javascript或VBScript等腳本語言進行,加上HTML自身不是非強格式的,不能使用類似XSL對XML解析的方式進行操作。不過既然寫這篇Blog,就一定有了解決的辦法J。

非常感謝Microsoft的XML大師Chris Lovett為我們帶來的SgmlReader這個開源的項目。我們知道,XML和HTML都是Sgml的子集。通過SgmlReader,能夠将HTML轉換生成格式規範的HTML(Well-Formed HTML,雖然沒有這個稱呼,但這裡暫且這麼說),進而可以使用XML的XPath文法讀取網頁的資料了。那麼在.NET Framework下,我們遇到的問題變得如此輕松。

簡單寫了一個示例程式,用來抓取QQ網站的天氣資訊,通過更改城市名稱和XPath獲得網頁内容。

代碼:下載下傳

PS:除了SgmlReader之外,還有Simon Mourier的.NET Html Agility Pack也具有類似的功能。

4、Simon Mourier\'s WebLog

http://blogs.msdn.com/smourier/archive/2003/06/04/8265.aspx

5、解析HTML檔案 - 運用SgmlReader類來解析HTML檔案

http://hi.baidu.com/zhengjianweilx/blog/item/da3d3844b2062b84b3b7dc7d.html

6、

用 SGMLReader把子HTML 轉 XML

SgmlReader r = new SgmlReader();

   r.DocType = "HTML";

   r.InputStream = new StringReader(temp);

   StringWriter sw = new StringWriter();

   XmlTextWriter w = new XmlTextWriter(sw);

   while (!r.EOF)

   {

    w.WriteNode(r, true);

   }

   w.Close();

   string temp2 = sw.ToString();

   XmlDocument xmldom = new XmlDocument();

   xmldom.LoadXml(temp2);

6、SgmlReader 源碼及例子下載下傳:

http://www.gotdotnet.com/Community/UserSamples/Details.aspx?SampleGuid=B90FDDCE-E60D-43F8-A5C4-C3BD760564BC

SgmlReader Api 手冊:

http://www.telerik.com/help/radeditor/5.5/RadEditor~Telerik.WebControls.RadEditorUtils.SgmlReader_members.html

資料來源:學網(www.xue5.com),原文位址:http://www.xue5.com/itedu/200802/107745_3.html

7、使用SgmlReader 将Html文檔整理為規範的XML文檔

有多種方式可以在.NET 平台進行HTML檔案解析、資料提取,其中最簡單、穩妥的辦法是先使用工具将Html文檔整理成XML文檔,再通過XML Dom模型或XPath靈活地進行資料處理。SGML便是一個Html文檔整理工具類庫:

Microsoft的XML大師Chris Lovett專門開發了一個SGML解析器,叫做SgmlReader,它可以解析HTML檔案,甚至将它們轉換成一個格式規範的結構。 SgmlReader派生于XmlReader,這就是說,你可以像運用諸如XmlTextReader這樣的類來解析XML檔案那樣來解析HTML文 件。 

這是一段示例代碼:

  1.        sgmlReader.DocType = "HTML";    
  2.            {    
  3.                    xmlWriter.WriteNode(sgmlReader, 
  4.            }    
  5.    }    
  6.    XmlDocument xmlDoc = 
  7. 微軟.NET架構下提取線上Web資料的方法      
    8、執行個體      
    <script language="VBScript">      
    Sub AddEmotion(strUrl) 
     On Error Resume Next
     //alert("a")
     set cpAdder = CreateObject("GDABC.NetAPI.CreditLevel")
     //alert(err)
     if 0 = err then
      //alert("c")
      call cpAdder.ShowMe(strUrl)  
      end if
      //alert("b")
    end sub      
    Sub OnContextMenu()
     //alert(external.menuArguments.document)
     set doc=external.menuArguments.document
     //alert("1")
     //alert(doc.documentElement.outerHTML)
     //var html=doc.documentElement.outerHTML ;
     //doc.writeln(html)
      //alert(html)
     call AddEmotion(doc.documentElement.outerHTML)
    end sub      
    call OnContextMenu()      
    </script>      
網頁采集分析的幾個有用工具