[Python] Selenium에서의 innerHTML, innerText, textContent 차이점

2026. 3. 18. 10:01·Python

(1) 문제 상황

셀레니움을 활용하여 스타벅스 사이트에 나와있는 점포 정보를 가져오는 프로젝트를 진행 중에

코드리뷰를 하면서 get_attribute() 안에 들어올 수 있는 인자들이 다양하게 있다는 것을 알게되어서

인자별 차이점을 기록하기 위해 글을 작성합니다.

 

# 주소
    address_p = store.find_element(By.CSS_SELECTOR, 'p.result_details')
    address = address_p.get_attribute('textContent').strip().split('1522-3232')[0].strip()

 

위 코드에 'textContent'가 있는 부분에 들어갈 수 있는 값을 주목하면서 보시면 될 것 같습니다.

 

(2) innerHTML, innerText, textContent 각각의 특징

먼저 세 가지 인자가 어떤 값을 반환하는지 살펴보겠습니다.

아래와 같은 HTML이 있다고 가정해봅니다.

 
 
html
<p class="result_details">
  서울특별시 강남구 테헤란로 <span style="display:none">숨겨진텍스트</span> 427
  1522-3232
</p>

 

 

(2-1) innerHTML을 사용하면 태그 안의 HTML 마크업을 그대로 가져옵니다.

address_p.get_attribute('innerHTML')
# 결과: '\n  서울특별시 강남구 테헤란로 <span style="display:none">숨겨진텍스트</span> 427\n  1522-3232\n'

즉, <span> 같은 태그가 문자열에 포함되어 나옵니다.

 

 

 

(2-2) innerText를 사용하면 실제 화면에 렌더링된 텍스트만 가져옵니다.

address_p.get_attribute('innerText')
# 결과: '서울특별시 강남구 테헤란로 427\n1522-3232'

display:none으로 숨겨진 요소는 포함되지 않는다는 점이 특징입니다.

textContent를 사용하면 숨겨진 요소를 포함한 모든 텍스트 노드를 가져옵니다.

 
 
 
address_p.get_attribute('textContent')
# 결과: '\n  서울특별시 강남구 테헤란로 숨겨진텍스트 427\n  1522-3232\n'

태그는 제거되지만 display:none인 요소의 텍스트도 포함된다는 점에서 innerText와 차이가 있습니다.


(3) 정리

인자태그 포함 | 숨겨진 요소 포함 | 속도

 

innerHTML O O 보통
innerText X X 느림
textContent X O 빠름

스타벅스 주소 크롤링 예제처럼 단순히 텍스트만 필요한 경우에는 textContent가 가장 적합한 선택입니다. 숨겨진 요소가 있더라도 .split()으로 불필요한 부분을 잘라낼 수 있고, innerText보다 속도도 빠르기 때문입니다.

 

innerText를 사용할 순 있겠지만 화면에 나온 요소만 출력하기 때문에 크롤링 시 scroll을 하는 동작을 추가해야하기 때문에 한번에 화면에 있는 내용을 다 가져오기에는 부적합합니다.  

'Python' 카테고리의 다른 글

[Python] 성능 병목을 찾는 방법 '프로파일링'  (0) 2026.06.28
[Python] sort(), reverse()정리  (0) 2026.03.27
[Python] 정규표현식  (0) 2026.03.13
[Python] pytest를 이용한 테스트 코드 작성법  (0) 2026.03.11
[Python] json.dumps() 사용법, 사용이유  (1) 2026.03.10
'Python' 카테고리의 다른 글
  • [Python] 성능 병목을 찾는 방법 '프로파일링'
  • [Python] sort(), reverse()정리
  • [Python] 정규표현식
  • [Python] pytest를 이용한 테스트 코드 작성법
byhy0
byhy0
byhy0 님의 블로그 입니다.
  • byhy0
    byhy0 님의 블로그
    byhy0
  • 전체
    오늘
    어제
    • 분류 전체보기 (62)
      • T아카데미 (4)
      • Project (2)
      • Airflow (4)
      • Python (16)
        • Django (0)
      • Java (1)
      • Spring (4)
        • Board Project (3)
      • SQL (3)
      • Docker (1)
      • 클라우드 (2)
      • Error (3)
      • Git (5)
      • 코딩테스트 (12)
        • SQL (5)
        • Python (7)
      • TIL (3)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    venv #파이썬 가상환경 #가상환경
    #클라우드 #클라우드컴퓨팅 #CloudComputing #온프레미스 #CS기초 #IT인프라 #서버
    T아카데미 #면접 #데이터 엔지니어 #K-Digital Traning
    programmers #SQL #코딩테스트
    vscode #git #git연동법
    게시판
    Git #설치법
    T아카데미 #2주차 회고 #데이터 엔지니어 2기
    API 요청 #API
    T아카데미#SK플래닛#데이터엔지니어2기
    push #pull #git연동
    T아카데미 #SK플래닛 #회고 #1주차
    티스토리챌린지
    BigQuery #SQL
    Spring
    오블완
    git #github #repository 생성
    python #pytest #테스트
    #Python #정규표현식 #Regex #웹크롤링 #데이터처리
    programmers # 코딩테스트 #sql
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
byhy0
[Python] Selenium에서의 innerHTML, innerText, textContent 차이점
상단으로

티스토리툴바