본문 바로가기

뉴스

Python으로 다른 사이트의 sitemap.xml 크롤링하기

 여러 사이트의 사이트맵 파일을 한 번에 수집하고 싶을 땐 어떻게 해야 할까요? 여기서 Python이 유용하게 쓰입니다! 💻
이 글에서는 Python을 활용해 여러 사이트의 sitemap.xml을 크롤링하고 제목(URL)을 텍스트 파일에 저장하는 방법을 소개합니다.

 

코드

1️⃣ 필요한 라이브러리 설치

먼저, Python의 필수 라이브러리 두 가지를 설치해야 해요.

pip install requests beautifulsoup4
  • requests: HTTP 요청을 보내고 응답을 받는 데 사용돼요.
  • BeautifulSoup: HTML, XML 데이터를 파싱(Parsing)하는 데 도움을 줘요.

 

2️⃣ 코드 설명 및 구현

아래는 주요 사이트의 sitemap.xml 파일을 크롤링하고, URL들을 텍스트 파일로 저장하는 Python 코드입니다.

📂 코드

import requests
from bs4 import BeautifulSoup

# 크롤링할 사이트의 sitemap.xml URL 목록
sitemaps = [
    "https://example1.com/sitemap.xml",
    "https://example2.com/sitemap.xml",
    "https://example3.com/sitemap.xml",
    "https://example4.com/sitemap.xml",
    "https://example5.com/sitemap.xml"
]

# 결과를 저장할 리스트
titles = []

# 각 사이트의 sitemap.xml을 크롤링
for sitemap_url in sitemaps:
    try:
        response = requests.get(sitemap_url)
        response.raise_for_status()  # HTTP 오류 체크

        # XML 파싱
        soup = BeautifulSoup(response.content, 'xml')

        # <url> 태그 내의 <loc> 태그를 찾아 URL 추출
        for url in soup.find_all('url'):
            loc = url.find('loc').text
            titles.append(loc)

    except Exception as e:
        print(f"Error fetching {sitemap_url}: {e}")

# 추출된 URL을 텍스트 파일로 저장
with open('sitemap_titles.txt', 'w', encoding='utf-8') as file:
    for title in titles:
        file.write(title + '\n')

print("Titles have been saved to sitemap_titles.txt")

 

 

 

3️⃣ 코드 로직 한눈에 보기 📋

단계 내용
1. 사이트 목록 크롤링할 사이트의 sitemap.xml URL을 sitemaps 리스트에 저장.
2. HTTP 요청 requests.get()으로 각 sitemap.xml에 접근.
3. XML 파싱 BeautifulSoup을 활용해 <url> 태그의 <loc> 데이터를 추출.
4. 파일 저장 추출한 URL들을 sitemap_titles.txt 파일에 저장.
5. 예외 처리 요청 실패나 XML 구조 오류 발생 시 오류 메시지를 출력.

 

 

 

4️⃣ 주의사항 (크롤링 시 필독!)

1️⃣ robots.txt 확인
크롤링하기 전에 반드시 사이트의 robots.txt 파일에서 크롤링이 허용되는지 확인하세요.
👉 참고: robots.txt 가이드

2️⃣ sitemap 구조 유의
사이트마다 sitemap.xml 구조가 다를 수 있어요. <loc> 대신 다른 태그를 사용할 수도 있으니 파싱 로직을 수정해야 할 수도 있습니다.

3️⃣ HTTP 예외 처리
네트워크 문제나 HTTP 오류(404, 403 등)가 발생할 경우를 대비해 예외 처리를 반드시 포함하세요.

 

 

5️⃣ URL 디코딩 팁

크롤링한 URL이 퍼센트 인코딩된 한글을 포함할 경우, 아래 코드로 원래의 한글로 디코딩할 수 있어요.

import urllib.parse

encoded_url = "https://example.com/%EC%98%88%EC%A0%9C%ED%8E%B8"
decoded_url = urllib.parse.unquote(encoded_url)

print(decoded_url)  # 결과: https://example.com/예제편
  • unquote: 퍼센트 인코딩된 문자열을 원래 상태로 복원해 줍니다.

 

 

6️⃣ 시선: 이 코드 왜 유용할까요?

"다른 사이트의 sitemap.xml을 굳이 크롤링해야 할까?"라는 질문이 떠오를 수도 있어요. 하지만 크롤링의 매력은 데이터 분석과 검색엔진 최적화(SEO)에 있습니다.

 

1️⃣ 데이터 수집 자동화
사람이 하나씩 사이트맵을 열어보며 URL을 수집할 필요가 없어요. Python 코드 한 줄로 자동화 가능하죠.

2️⃣ SEO 분석
사이트의 모든 URL을 모아 누락된 페이지를 찾거나, 방문자 유입 경로를 확인하는 데 사용할 수 있어요.

3️⃣ 유용한 데이터 활용
수집한 URL을 기반으로 웹사이트 상태 점검, 콘텐츠 업데이트 주기 분석 등을 수행할 수 있어요.

 

📝 결론적으로

 

 크롤링은 데이터에 대한 새로운 관점을 제공합니다. Python은 배우기 쉽고 실용성이 뛰어나서 누구든지 금방 시작할 수 있어요. "사이트맵 크롤링? 별 거 아니네!"라는 말이 나올 수 있도록 이 코드를 활용해 보세요. 😊