피드로 돌아가기
How I Handle Nested Tables and Rowspans (The Hard Parts of HTML Table Parsing)
Dev.toDev.to
Frontend

HTML 테이블 파싱의 4가지 난제 — Virtual grid로rowspan 확장하기

How I Handle Nested Tables and Rowspans (The Hard Parts of HTML Table Parsing)

circobit2026년 4월 1일11intermediate

Context

HTML 테이블 파싱은 rowspan이 포함된 셀 처리 시 columns misalignment를 발생시킨다. Wikipedia infoboxes의 nested tables, nav rows, title rows, grouped headers 등의 구조가 실제 데이터 추출을 어렵게 만든다.

Technical Solution

  • Virtual grid 생성 후 rowspan/colspan 셀을 대상으로 fill 수행
  • isNestedTable() 함수로 table 조상 검사 후 top-level tables만 추출
  • Wikipedia nav row 패턴(/^v\s+t\s+e\s/i 등) 매칭으로 데이터 행과 구분
  • colspan이 전체 너비인 title row를 isTitleRow()로 필터링
  • extractCellText()에서 nested table 제거 후 textContent 추출

Key Takeaway

DOM cell은 virtual grid를 populate하는 instruction일 뿐이다. 실제 데이터 구조는 virtual grid가 source of truth가 되어야 정확한 alignment를 보장한다.


Complex rowspan/colspan 테이블에서 align된 데이터 추출 시 virtual grid 기반 expansion + pattern detection으로 nav rows 필터링 + nested tables flattening을 순차 적용하면 misalignment 없이 정확한 테이블 구조를复原할 수 있다.

원문 읽기