링크(href) 추출기
HTML 소스를 붙여넣으면 모든 링크를 추출합니다 — 중복 없이 정리된 href 주소를 한 줄씩 나열하며, 복사하거나 다운로드할 수 있습니다.
조회수 1,057회
0 개의 고유 링크
링크를 찾을 수 없습니다.
작동 방식
HTML 소스 — 소스 보기 결과물, 저장된 .html 파일, 또는 복사한 어떠한 코드 조각이든 — 를 붙여넣으면 이 도구는 그 텍스트를 손으로 작성한 정규식이 아니라 브라우저 자체의 HTML 파서에 넘깁니다. 이 차이는 겉보기보다 훨씬 중요합니다. 실제 HTML은 단순한 정규식이 감당하기 어려운 방식으로 지저분합니다: 속성은 큰따옴표, 작은따옴표, 또는 따옴표 없이 쓰일 수 있고(href=about.html도 기술적으로 유효한 HTML입니다), 태그는 자체 닫힘일 수도 아닐 수도 있으며, 여러 단계로 중첩되거나 여러 줄에 걸쳐 있거나 그 자체로 꺾쇠괄호를 담은 주석과 <script> 블록 안에 들어 있을 수도 있습니다. 브라우저급 파서는 이런 예외 상황 하나하나를 20년에 걸쳐 흡수해 왔습니다 — 마크업이 아무리 잘못 작성되어 있어도 주어진 페이지를 렌더링해야 하기 때문입니다. 태그를 위한 패턴 매칭을 처음부터 다시 만드는 대신 이 동일한 엔진 위에 추출기를 구축하는 것이, 스크레이핑한 경쟁사 페이지나 오래된 캠페인 내보내기처럼 직접 작성하지 않은 마크업에서도 안정적으로 동작하게 만드는 이유입니다.
파서가 붙여넣은 마크업으로부터 구조적인 트리를 구성하고 나면, 모든 <a> 요소의 href는 문자열에서 뽑아낸 원시 텍스트가 아니라 해당 요소의 속성으로 직접 읽힙니다 — 이는 따옴표와 관련된 특이 사항이나 패턴 매칭을 속일 수 있는 주석 안의 엉뚱한 꺾쇠괄호를 애초에 우회하게 해줍니다. 이렇게 얻은 URL 목록은 중복이 제거되고 한 줄에 하나씩 기록되어, 클립보드로 복사하거나 일반 텍스트 파일로 다운로드할 준비가 됩니다.
구체적인 예시: 어떤 페이지의 HTML에 <a href='/pricing'>, <a href="https://example.com/blog">, 그리고 따옴표가 전혀 없는 <a href=mailto:[email protected]>가 있다고 가정해 봅시다 — 세 줄에 세 가지 서로 다른 따옴표 스타일입니다. href="..."와 일치하도록 작성된 정규식은 작은따옴표나 따옴표 없는 경우를 조용히 놓칠 것입니다. 파서는 이 셋을 동일하게 읽는데, 브라우저 입장에서 이들은 따옴표로 감쌌든 아니든 그저 속성 값일 뿐이기 때문입니다.
알아두어야 할 사항
/pricing이나../blog/post와 같은 상대 URL은 소스에 쓰인 그대로 추출되며, 완전한https://...주소로 변환되지 않습니다. 상대 경로를 절대 URL로 바꾸려면 페이지의 기본 URL을 알아야 합니다 — 보통 HTML을 처음 가져온 주소이거나 명시적인<base>태그입니다 — 붙여넣은 코드 조각은 이 정보를 스스로 지니고 있지 않습니다.- 이 도구는 스스로 어떠한 URL도 가져오지 않으며, 오직 제공된 HTML만 읽습니다. 이는 의도적인 경계입니다: 이런 방식으로 페이지의 외부 링크를 점검하는 데는 이 사이트 쪽의 서버 요청이 전혀 필요하지 않으며, 소스를 보거나 저장할 때 이미 사용한 브라우저만 있으면 충분합니다.
mailto:와tel:링크는 다른href와 똑같이 통과됩니다. 파서가 스킴에 따라 구분하지 않기 때문입니다 —href속성에 들어 있는 것은 무엇이든 나열할 가치가 있는 링크로 취급됩니다.
자주 묻는 질문
페이지를 직접 가져오나요, 아니면 HTML을 제가 준비해야 하나요?
HTML은 직접 준비하셔야 합니다 — 소스 보기 결과, 저장된 .html 파일의 내용, 또는 아무 HTML 조각이나 붙여넣으시면 됩니다. 이 도구는 스스로 URL을 가져오지 않습니다(이는 이 사이트가 하지 않는 서버 요청을 필요로 하기 때문입니다).
상대 경로 링크도 포함되며, 완전한 URL로 변환되나요?
상대 경로 링크(예: /about 또는 ../page.html)는 소스에 쓰인 그대로 추출되며, 절대 URL로는 결코 변환되지 않습니다. 이를 변환하려면 페이지의 기본 URL — 보통 HTML을 가져온 주소 — 을 알아야 하는데, 붙여넣은 코드 조각은 이 정보를 스스로 지니고 있지 않습니다.
mailto:나 tel: 링크도 포함되나요?
네 — 스킴에 상관없이 모든 href 값이 추출됩니다. 파서가 링크의 종류로 필터링하지 않고 속성 자체를 읽기 때문입니다.
왜 정규식 대신 브라우저의 DOM 엔진으로 분석하나요 — 정말 차이가 있나요?
지저분한 실제 HTML에서 가장 큰 차이가 납니다. 한 가지 따옴표 스타일(예: 큰따옴표를 쓰는 href="...")에 맞춰진 정규식은 작은따옴표나 따옴표 없는 속성, 자체 닫힘 변형, 깊이 중첩되거나 손상된 마크업 안에 묻힌 href를 조용히 놓칩니다. DOM 파서는 이 모든 것을 브라우저가 페이지를 렌더링할 때와 동일한 방식으로 처리하는데, 실제로 같은 기반 엔진이기 때문입니다.
축소되었거나 심하게 손상된 HTML에서도 링크를 잡아내나요?
거의 모든 경우에 그렇습니다. 브라우저는 완벽하게 정형화되지 않은 페이지 — 닫는 태그 누락, 일관되지 않은 중첩, 한 줄로 축소된 마크업 — 도 렌더링하도록 만들어져 있으며, 여기에도 동일하게 관대한 분석 방식이 적용됩니다. 이것이 바로 깨끗하고 잘 정형화된 입력을 기대하는 엄격한 정규식에 비해 갖는 확실한 장점입니다.
비슷한 도구
문제 신고하기
링크(href) 추출기
댓글
아직 댓글이 없습니다 — 첫 댓글을 남겨보세요!