[C#] 특정 HTML 태그 제거하고 텍스트 추출하기

웹 개발이나 데이터 처리 중, HTML 파일이나 텍스트에서 특정 태그를 제거하고 그 안에 포함된 내용만을 추출해야 할 때가 종종 있죠.

이를 수동으로 처리하려면 시간이 많이 걸리기에, 오늘은 특정 태그를 찾아 제거하고, 그 안의 텍스트만 남겨 클립보드에 복사하는 C# 코드를 설명해드릴게요.

이번 코드에서는 기본적으로 파일에서 특정 태그를 제거한 후, 해당 태그 안에 포함된 텍스트를 추출하는 작업을 해요. 예를 들어, HTML 파일에서 <p> 태그나 <div> 태그를 제거하고 그 안에 있는 텍스트만 남길 수 있답니다.

정규 표현식을 사용해 HTML 태그를 손쉽게 제거할 수 있어요. 이는 파일에서 불필요한 태그를 제거하고 순수한 텍스트만 추출할 때 유용해요~

물론 라이브러리를 활용하여 더 쉽게 하는 방법도 있습니다~

예시 코드

private void RemoveTag(string _tag)
{
    string result = string.Empty;
    string line = string.Empty;
    string path = Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + "\\test.txt";
    StringBuilder s = new StringBuilder();

    using (StreamReader sr = new StreamReader(path))
    {
        while ((line = sr.ReadLine()) != null)
        {
            line = Regex.Replace(line, $@"(?:<{_tag}[^>]*?>)(.*?)(?:</{_tag}>)", match =>
            {
                return match.Groups[1].Value;
            });

            s.AppendLine(line);
        }
    }

    result = s.ToString();

    if (result.EndsWith(Environment.NewLine))
        result = result.TrimEnd(Environment.NewLine.ToCharArray());

    Clipboard.SetDataObject(result);
}

코드 설명

이 코드는 RemoveTag라는 메서드로 구성되어 있고, 다음과 같은 순서로 동작해요.

  1. 파일 경로 설정: 우선 파일 경로를 데스크탑에 있는 test.txt로 지정해요. Environment.GetFolderPath()를 사용해서 운영 체제의 데스크탑 경로를 가져오는 방식인데 필요에 따라 바꾸세요.
  2. 파일 읽기: StreamReader를 사용해 파일을 한 줄씩 읽어옵니다.
  3. 정규식으로 태그 제거: Regex.Replace()를 이용해 특정 HTML 태그를 찾아 제거하고, 그 안의 텍스트만 남기는 작업을 해요. 태그를 찾는 패턴은 /<태그명>내용</태그명>/ 형식으로 지정되어 있어요. 여기서 _tag는 함수 호출 시 전달받은 값으로, 사용자가 원하는 태그를 동적으로 설정할 수 있어요.
  4. 결과 저장: StringBuilder를 사용해서 한 줄씩 가공된 결과를 저장해요.
  5. 클립보드 복사: 최종적으로 가공된 텍스트는 Clipboard.SetDataObject(object) 메서드를 사용해 클립보드에 복사됩니다. 즉, 텍스트를 가공한 후 바로 붙여넣기 작업을 할 수 있게 돼요.
이전최근
댓글 쓰기
가져가실 때, 출처 표시 부탁드려요! 감사합니다. 💗