2011-11-14 8 views
2

C#의 웹 페이지에서 텍스트를 가져 오려고합니다.
나는 HTML을 얻고 싶지 않다. 나는 웹 페이지의 실제 텍스트를 원한다. 내가 "<b>cake</b>"을 입력하는 것처럼, 나는 케이크가 아니라 태그를 원한다.웹 페이지에서 텍스트를 가져 오는 방법은 무엇입니까?

+0

HTML 분석기 (예 : HTML 민첩성 팩)를 확인한 다음 DOM을 반복적으로 반복하고 각 요소에서 텍스트를 추출합니다. –

+0

http://htmlagilitypack.codeplex.com/ – John

답변

4

HTML 민첩성 팩 라이브러리를 사용하십시오. 상황에 따라 다르다

HtmlAgilityPack.HtmlWeb web = new HtmlAgilityPack.HtmlWeb(); 
    HtmlAgilityPack.HtmlDocument doc = web.Load("Yor Path(local,web)"); 
    var result=doc.DocumentNode.SelectNodes("//body//text()");//return HtmlCollectionNode 
    foreach(var node in result) 
    { 
     string AchivedText=node.InnerText;//Your desire text 
    } 
+0

이것은 아주 좋은 답변입니다! 감사. –

1
당신은이 일 2 (간단한 예를 들어)로 정규 표현식을 사용하여 태그를 제거 할 수

:

// You can import System.Text.RegularExpressions for convenience, of course. 
System.Text.RegularExpressions.Regex tag = new System.Text.RegularExpressions.Regex("\<.+?\>"); 
myHTML = tag.Replace(myHTML, String.Empty); 

하지만 당신은 잘 구조화 된 많은 양의 데이터를 검색해야하는 경우에, 당신은 더 좋을 수도 HTML 라이브러리 을 사용하여 해제하십시오. (웹 페이지가 XHTML 인 경우, 모든 더 나은 - System.Xml 클래스를 사용합니다.) 예를 들어 http://htmlagilitypack.codeplex.com/처럼

1.
JavaScript에서 데이터를 가져 오려고하거나 데이터가 요소의 속성 내에 있고 꺾쇠 괄호를 포함하는 경우 의도하지 않은 부작용이있을 수 있습니다. &amp;과 같은 이스케이프 시퀀스도 허용해야합니다.

+0

에서 RegEx가 잘 작동한다고 생각하지 않습니다. HTML의 꺾쇠 괄호는 태그의 일부가 아니며 CSS, Javascript 문자열 상수 등에서도 나타날 수 있습니다. 실제로는 HTML 파서를 사용하는 유일한 방법입니다. –

+0

@MikeChristensen : 그래서 저는 "간단한 예"와 "큰 권"을 말하고있었습니다. OP가 약간만 필요하다면, 그 한 가지를 위해 프로젝트에 본격적인 파서를 포함 할 필요가 없습니다. 게다가, JavaScript는 종종 데이터의 구문 분석에 포함되지 않습니다. CSS는 분명히 아닙니다 ... – Ryan

+0

네가 그랬 으면 좋았을 텐데요. –

1

: 귀하의 요구 사항이 코드를 사용하기 위해 구문 분석 HTML을위한 아주 좋은 라이브러리입니다

. 응용 프로그램이 WebBrowser 구성 요소를 사용하여 웹 페이지를 다운로드하면 해당 구성 요소는 Internet Explorer처럼 백그라운드에서 자동으로 구문 분석을 수행합니다. DOM 트리를 걷고 원하는 텍스트를 추출하면됩니다. HtmlElement.InnerText property이 특히 유용 할 것입니다.

관련 문제