본문 바로가기
  • 이웃집 찰스
파이썬

sitemap 사이트맵에서 url 추출하기 - 파이썬

by 리뷰하는 김과장 2023. 4. 25.

 

 
 

이번에는 파이썬으로 사이트맵( sitemap.xml)에서 url 추출하는 방법에 대해 알아보는 시간 가지도록 하겠습니다.  구글서치콘솔이나 빙 그리고 네이버에 색인을 수동이 아닌 자동으로 진행하기 위해서는 제일 첫단계가 url 을 추출하는것입니다. 사이트맵( sitemap.xml)에서 ulr 을 추출하는게 가장 쉬운방법이기 때문이죠. 파이썬으로 사이트맵( sitemap.xml)에서 url 추출하는 방법에 대해 궁금하시다면 따라오세요.

 

 

 

 

1. 챗gpt 에게 물어보다

 

 

챗지피티에게 물었습니다.

 

https://alltopx.com/sitemap.xml 이거 내 사이트맵 주소인데 이 사이트맵으로 모든 url 을 추출하는 파이썬 코드를 부탁해

 


 

챗지피티가 대답했습니다.

 

먼저 제공해주신 검색 결과를 확인해보니, 주어진 사이트맵으로 모든 URL을 추출하는 파이썬 코드에 대한 내용이 있습니다.

 

 

import requests
from bs4 import BeautifulSoup
import pandas as pd
from urllib.parse import urlparse

sitemap_url = 'https://alltopx.com/sitemap.xml'

r = requests.get(sitemap_url)
soup = BeautifulSoup(r.content, 'xml')

urls = []
for loc in soup.find_all('loc'):
    urls.append(loc.text)

df = pd.DataFrame({'url': urls})

# 모든 URL을 텍스트 파일로 저장
df.to_csv('urls.txt', index=False, header=False)

print(df)

 

위 코드를 실행하면 추출된 모든 URL이 데이터프레임에 저장되고, urls.txt 파일로 저장됩니다.

이 코드를 실행하기 위해서는 먼저 requests, BeautifulSoup, pandas, urllib 라이브러리를 설치해야 합니다.

 

 


 

 

위 방식대로 해보니 실제로 url 을 잘 추출해주었습니다. 텍스트로 저장하는 방법까지 알려주니 너무 기특하네요.

 

근데 문제가 생겼습니다.

사이트맵안에 url이 100개가 넘어가니 

https://rich.alltopx.com/sitemap.xml?page=1

https://rich.alltopx.com/sitemap.xml?page=2

 

이런씩으로 페이지가 매겨지는 현상이 생기네요.

 

이럴때는 사이트맵을 https://rich.alltopx.com/sitemap.xml?page=1 으로 인식하면 

1페이지에 해당되는 사이트맵을 불러오기는 하는데 이것도 귀찮습니다. 

그래서 챗지피티에게 다시 물어봤습니다.

 

 

 

 

2. url 이 100개가 넘을 경우

 

 

 

 

질문 : url 이 100개 넘으면 페이지로 넘어가는데 이럴경우는 어떻게 해야해?

 

 


 

답변

advertools 라이브러리를 사용하여 URL을 추출하는 방법입니다. 해당 라이브러리를 사용하기 위해서는 라이브러리를 설치해야 합니다. 다음은 설치 방법입니다.

 

pip install advertools

 

설치가 완료되면 아래 소스코드를 사용하여 주어진 사이트맵으로부터 URL을 추출할 수 있습니다.

 

 

import advertools as adv

# 사이트맵 URL 설정
sitemap_url = 'https://example.com/sitemap.xml'

# 사이트맵에서 URL 추출
urls = adv.sitemap_to_df(sitemap_url)['loc']

# 추출한 URL을 텍스트 파일로 저장
with open('urls.txt', 'w') as f:
    for url in urls:
        f.write(url + '\n')

 

 

먼저 advertools 라이브러리를 가져온 후, sitemap_url 변수에 사이트맵 URL을 입력합니다. 그런 다음 adv.sitemap_to_df() 함수를 사용하여 사이트맵을 데이터프레임으로 변환하고, ['loc'] 열을 추출하여 URL을 얻습니다. 마지막으로, open() 함수를 사용하여 urls.txt 파일을 열고, 추출한 URL을 한 줄씩 쓰면서 저장합니다.

 


 

실제로 위 코드를 실행해보니 url 이 잘 나오는것을 확인했습니다. 챗지피티의 퀄리티가 장난이 아니네요. 한글로 주석까지 달아서 코드를 짜주니 너무 편리합니다. ^^

 

 

 

 

 

3. 저장한 텍스트 파일을 읽을려면...

 

위에서 저장했던 텍스트 파일을 열어서 한줄씩 읽어서 프린트 하는 코드를 만들어 보도록 하겠습니다/

 

질문 : 위에서 작업한 urls.txt 파일의 내용을 한줄씩 읽어서 프린트 하는 파이썬 코드를 알려줘

 

 

답변

 

with open('urls.txt', 'r') as f:
    for line in f:
        print(line.strip())

 

위 코드에서는 open 함수를 이용하여 urls.txt 파일을 읽기 전용 모드('r')로 열었고, 이어서 for 루프를 사용하여 파일 내의 각 줄을 반복하면서 print 함수를 사용하여 해당 줄을 출력합니다. strip 메서드를 사용하여 각 줄의 공백을 제거합니다.

 


 

파이썬이 너무 쉬워졌습니다. 챗지피티와 함께라면 어려운 숙제도 문제가 없을것 같네요~ ^^

 

 

 

이렇게 해서 파이썬으로 사이트맵( sitemap.xml)에서 url 추출하는 방법에 대해 자세히 알아보았습니다. 파이썬으로 사이트맵( sitemap.xml)에서 url 추출하는 방법에 대해 궁금하셨던분들에게는 유용한 정보가 되었을듯합니다. 다음에는 더욱 유용한 정보로 찾아올것을 약속드리며 이번 포스팅은 여기까지 하도록 하겠습니다. 오늘도 행복한 하루 되세요~ ^^

 

 

 

♥공감은 고래도 춤추게 합니다~ ^^

 

 

 

댓글