2017-03-07 2 views
-2

나는 (당신의 마음에 개요, 삽입 태그 및 콘텐츠) 예를 들어, 웹 사이트의 콘텐츠가 포함 된 문자열불필요한 웹 사이트 콘텐츠를 얻으려면 어떻게해야하나요?

$string = '<html> 
    <head> 
    <meta content="text/html; charset=ISO-8859-1" http-equiv="content-type"> 
    <title>Some title 
    </title> 
    </head> 
    <body>Navigation 
    <br><div>CSS</div> 
    <br><div>JavaScript</div> 
    <br>Advertising 
    <br><div>Content</div> 
    <br>Navigation 
    <br>Advertising 
    <br>Inprint 
    <br> 
    </body> 
</html>' 

이 어떻게 불필요한없이 콘텐츠를해야하나요? 콘텐츠로, 나는 "콘텐츠"라는 단어를 의미하는 것이 아니라 웹 사이트의 실제 내용을 의미합니다.

예를 들어, 포럼에서 탐색, 태그, 광고없이 포럼의 항목을 원합니다.

나는 태그를 제거하고 있지만 내용을 가져 오지 않고있는 string s = Regex.Replace(string, "<.*?>", String.Empty);을 시도했습니다.

반복적이고 악용 될 수있는 패턴이있어 혼란없이 콘텐츠를 얻을 수 있습니까?

+0

나는 "불필요한"이 무슨 뜻인지 몰라. 예상되는 결과물을 게시 할 수 있습니까? – smead

+0

Html Agility Pack을 사용하여 HTML을 구문 분석하십시오. –

+0

@smead가 업데이트되었습니다. –

답변

0

HTML Agility Pack NuGet 패키지를 사용할 수 있습니다. 그것은 꽤 유연하고 당신이 그것을 통해 달성하고자하는 것을 매우 구체적으로 할 수 있습니다.

HtmlDocument document2 = new HtmlDocument(); 
document2.Load(@"C:\Temp\sample.txt") 
HtmlNode[] nodes = document2.DocumentNode.SelectNodes("//a").ToArray(); 
foreach (HtmlNode item in nodes) 
{ 
    Console.WriteLine(item.InnerHtml); 
} 

이 더 많은 예제 here 있습니다 : 여기

는 페이지에있는 모든 하이퍼 링크를하는 방법에 대한 예입니다.

+0

좋은 출발점인데도 주요 문제는 해결하지 못했다. 가장 큰 문제는 내용을 필터링하는 방법, 즉'SelectNodes' 또는'foreach' 루프에서 무엇을 사용해야하는지입니다. 'if (item.InnerText.Length> 250 &&! item.InnerHtml.Contains (">"))'시도했지만 그렇게 쉬운 일은 아니 었습니다. 그런 다음 'div'와 'span'과 같은 태그의 특정 속성의 값에는 '전체'또는 '기사'가 포함되어 있음을 알게되었습니다. 아직도 만족스럽지 않습니다. –

+0

@pdee'content'를 정의하십시오. 질문에 대한 예제를 제공하십시오. – CodingYoshi

관련 문제