2012-07-17 4 views
1

.net. HTML 웹 페이지를 긁는 가장 좋은 방법은 무엇입니까?.net에서의 html 스크랩

.net 프레임 워크 2에서 실행되는 모든 오픈 소스가 있으며 모든 HTML을 객체에 넣습니다. "HTML 민첩성 팩"에 대한 기사를 읽었으나 다른 의견이 있습니까?

+0

[tag : C#] * 및 * [tag : vb.net]으로 태그를 붙인 이유는 무엇입니까? – ThiefMaster

+0

페이지를 스케치하거나 페이지를 처리하려고합니까? DOM 또는 Spider의 컨텍스트 정보를 복제해야합니까? –

+0

나는 vb.net이 페이지를 열고 html을보고 원하는 것을 취하고 싶다. 나는 그것이 .net 스크립트가 javscript보다 강력하고 사이트가 내 서버에 없을 거라고 생각했다. –

답변

2

나는 HtmlAgilityPack는 생각하지만 당신은 또한

  1. Fizzler 사용할 수 있습니다 : C#
  2. SgmlReader에 대한 CSS 선택기 엔진 : 유효한 XML
  3. SharpQuery에 html로 변환 : 대안 fizzler
1

당신은 Tidy 라이브러리를위한 # 래퍼 인 Tidy.net을 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 민첩성 팩이 괜찮습니다.