2012-07-17 58 views
1

在.net什么是刮取HTML网页的最佳方式。html scrape in .net

是否有一些开放源代码运行在.net framework 2上,并将所有html放入对象中。我已阅读“HTML敏捷软件包”,但有没有其他想法?

+0

你为什么用[tag:c#] *和* [tag:vb.net]标记这个? – ThiefMaster 2012-07-17 11:16:31

+0

您是否在寻找页面或处理页面?你需要查看DOM中的上下文信息还是只需要Spider复制? – 2012-07-17 11:17:05

+0

我希望vb.net打开页面并查看html所需的内容。我以为.net,因为它比javscript更强大,网站不会在我的服务器上 – 2012-07-17 11:20:07

回答

2

我觉得HtmlAgilityPack是,但你也可以使用

  1. Fizzler结果:C#
  2. SgmlReader CSS选择器引擎:将HTML转换成有效的XML
  3. SharpQuery:的替代fizzler
1

您可以使用Tidy.net,它是Tidy Library的ac#包装器,用于在此处转换XHTML中的HTML:http://sourceforge.net/projects/tidynet/,这样你就可以获得有效的XML并按照这样处理它。

我会做这样说:

 // don't forget to import TidyNet and System.Xml.Linq 

     var t = new Tidy(); 
     TidyMessageCollection messages = new TidyMessageCollection(); 
     t.Options.Xhtml = true; 

     //extra options if you plan to edit the result by hand 
     t.Options.IndentContent = true; 
     t.Options.SmartIndent = true; 
     t.Options.DropEmptyParas = true; 
     t.Options.DropFontTags = true; 
     t.Options.BreakBeforeBR = true; 




     string sInput = "your html code goes here"; 
     var bytes = System.Text.Encoding.UTF8.GetBytes(sInput); 

     StringBuilder sbOutput = new StringBuilder(); 

     var msIn = new MemoryStream(bytes); 
     var msOut = new MemoryStream(); 

     t.Parse(msIn, msOut, messages); 
     var bytesOut = msOut.ToArray(); 
     string sOut = System.Text.Encoding.UTF8.GetString(bytesOut); 

     XDocument doc = XDocument.Parse(sOut); 

     //process XML as you like 

否则,HTML敏捷包就可以了。