웹 페이지를 일반 텍스트로 변환 ..?

c# html-agility-pack regex

문제

웹 페이지를 일반 텍스트로 변환하려고합니다. 그러나 내가 테이블을 만난다면 나는 td와 tr 태그를 얻고있다. 이러한 테이블 태그를 바꾸면 일부 콘텐츠를 가져올 수 없습니다.

여기 내 코드가있다.

string s = Regex.Replace(htmldoc, "<script.*?</script>", "", RegexOptions.Singleline | RegexOptions.IgnoreCase);
s = Regex.Replace(s, "<!--.*?-->", "", RegexOptions.Singleline | RegexOptions.IgnoreCase);
s = Regex.Replace(s, "<style.*?style>", "", RegexOptions.Singleline | RegexOptions.IgnoreCase);
s = Regex.Replace(s, "<a.*?a>", "", RegexOptions.Singleline | RegexOptions.IgnoreCase);
s = Regex.Replace(s, "<img.*?img>", "", RegexOptions.Singleline | RegexOptions.IgnoreCase);
s = Regex.Replace(s, "<table.*?table>", "", RegexOptions.Singleline | RegexOptions.IgnoreCase);
HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(s);
s = doc.DocumentNode.SelectSingleNode("//body").InnerText.Trim();

이를 확인하고 td 및 tr 태그를 가져 오지 않고 테이블에서 내용을 가져올 수있는 방법을 알려주십시오.

수락 된 답변

HTML 민첩성 팩을 사용하여 테이블을 구문 분석하는 경우 정규식을 사용하여 HTML 태그를 제거 할 필요가 없습니다. 여기에 HTML Agility 팩을 사용하여 테이블을 파싱하는 몇 가지 좋은 예가 있습니다. 예 : HTML 민첩성 팩 - 구문 분석 테이블


인기 답변

본문의 InnerText :

string html = @"
<html>
    <title>title</title>
    <body>
           <h1> The wheel.</h1>
           Stop reinventing the wheel ! Use powerful APIs 
           for manipulating html docs !
           <h3> I am fine </h3>
           <img src=""da_wheel_in_my_mind.png""/>
    </body>
</html>";

HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(html);
string text = doc.DocumentNode.SelectSingleNode("//body").InnerText;

다음으로 공백과 새 줄을 접을 수 있습니다.

text = Regex.Replace(text, @"\s+", " ").Trim();

그러나이 경우에 작동하는 동안 hello<br>world 또는 hello<i>world</i> 와 같은 마크 업은 InnerText 에 의해 helloworld 로 변환되어 태그가 제거됩니다. 표시가 마크 업에 의해서가 아니라 CSS에 의해 결정되기 때문에이 문제를 해결하는 것은 어렵습니다.




아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.