IT기타
웹페이지의 태그 분석 방법
emilyyoo
2025. 3. 17. 20:52
728x90
렌더링된 웹페이지의 태그를 분석하고 선택자를 만드는 방법
1. 웹페이지의 태그 분석 방법
웹페이지에서 원하는 요소를 찾기 위해 HTML 구조를 분석하는 방법은 다음과 같다.
(1) 개발자 도구 사용
- Chrome(또는 Edge, Firefox)에서 웹사이트 열기
- F12 또는 Ctrl + Shift + I (Mac은 Cmd + Option + I) 키를 눌러 개발자 도구 열기
- Elements 탭에서 원하는 요소 찾기
- Ctrl + Shift + C (Cmd + Shift + C for Mac)를 누른 후, 마우스를 웹페이지 요소 위에 올리면 해당 태그가 하이라이트됨
- 해당 태그의 HTML 구조 확인
- 예시:
html :<div class="product"><h2 id="title">상품 제목</h2><p class="price">$100</p> </div>
- 예시:
(2) JavaScript로 태그 확인
콘솔에서 직접 태그를 확인할 수도 있다.
javascript :
console.log(document.querySelector("h2")); // 첫 번째 h2 태그 출력
console.log(document.querySelector(".price")); // 클래스가 'price'인 요소 출력 console.log(document.querySelector("#title")); // ID가 'title'인 요소 출력
2. CSS 선택자 만드는 방법
선택자는 HTML 요소를 찾을 때 사용되며, 여러 가지 방법이 있어.
(1) 기본 선택자
선택자 유형예시설명
태그 선택자 | div, p, h1 | 특정 태그를 선택 |
클래스 선택자 | .price | class="price"인 요소 선택 |
ID 선택자 | #title | id="title"인 요소 선택 |
(2) 계층 선택자
선택자예시설명
자식 선택자 (>) | .product > h2 | .product 안에 있는 h2 태그 (직계 자식) |
후손 선택자 (띄어쓰기) | .product h2 | .product 내부의 모든 h2 (직계 X, 포함 관계) |
(3) 속성 선택자
선택자예시설명
특정 속성 포함 | input[type="text"] | type="text"인 input 태그 |
속성 값 포함 | a[href*="google"] | href 속성에 "google"이 포함된 a 태그 |
(4) 가상 클래스 & 가상 요소
선택자예시설명
첫 번째 요소 | p:first-child | 부모 안에서 첫 번째 p 태그 |
마지막 요소 | p:last-child | 부모 안에서 마지막 p 태그 |
특정 순서 | li:nth-child(2) | 두 번째 li 요소 |
특정 패턴 | li:nth-child(odd) | 홀수 번째 li 요소 |
3. 선택자 예제
웹페이지에 다음과 같은 HTML이 있다고 가정해 보자.
<div class="container">
<ul class="menu">
<li class="item">홈</li>
<li class="item active">상품</li>
<li class="item">문의</li>
</ul>
</div>
이때, 선택자를 만드는 방법:
- .menu → ul 태그 중에서 class="menu"를 가진 요소
- .menu .item → .menu 내부에 있는 모든 .item
- .menu .item.active → .menu 내부에서 class="item active"를 가진 요소
- .menu li:first-child → menu 내부에서 첫 번째 li
- .menu li:last-child → menu 내부에서 마지막 li
- .menu li:nth-child(2) → menu 내부에서 두 번째 li
4. input[type="text"] 가 여러개 있는데 하나만 특정하려면, 여러속성의 조합을 해야 내가 선택할 객체가 유일해져서 그것만 선택되는 상황. 즉 여러 속성을 조합해서 유일한 요소를 선택하는 문법은 아래와 같다.
4-1. CSS 선택자로 여러 속성 조합하여 요소 선택하기
✅ 방법: querySelector()에서 속성을 조합해서 선택가능.
javascript :
const inputElement = document.querySelector('input[type="text"][aria-label="cl"]');
console.log(inputElement);
설명
- input[type="text"][aria-label="cl"] → type="text"이면서 aria-label="cl"인 요소를 선택
- 속성을 여러 개 조합할 수 있음
- querySelector()는 첫 번째로 찾은 요소만 반환함
4-2. 여러 개의 요소를 가져오려면?
✅ 방법: querySelectorAll()을 사용하면 모든 요소를 가져올 수 있음.
javascript :
const inputs = document.querySelectorAll('input[type="text"][aria-label="cl"]');
inputs.forEach(input => console.log(input));
- querySelectorAll() → 조건을 만족하는 모든 요소를 NodeList로 반환
- forEach()로 순회하면서 개별 요소 출력 가능
4-3. 특정 속성이 있는 input만 객체로 변환하기
✅ 방법: 선택한 input의 속성을 객체로 변환하는 코드와 결합
javascript :
const attributes = Object.fromEntries( [...document.querySelector('input[type="text"][aria-label="cl"]').attributes] .map(attr => [attr.name, attr.value]) );
console.log(attributes);
💡 위 코드가 하는 일
- querySelector('input[type="text"][aria-label="cl"]') → 특정 속성 조합으로 유일한 요소 선택
- .attributes → 모든 속성 가져오기
- map()과 Object.fromEntries() → 객체로 변환
📌 정리
✅ 여러 속성을 조합해서 특정 input을 선택하는 문법
javascript :
document.querySelector('input[type="text"][aria-label="cl"]')
✅ 선택한 input의 속성을 객체로 변환
javascript :
Object.fromEntries([...document.querySelector('input[type="text"][aria-label="cl"]').attributes].map(attr => [attr.name, attr.value]));
728x90