파이썬으로 티스토리 블로그 포스팅 개수 가져오기 : 4개 블로그 지원 및 합계 기능 추가
파이썬을 활용한 티스토리 블로그 크롤링 업그레이드
티스토리 블로그의 포스팅 개수를 자동으로 가져오는 프로그램을 개선하였다. 기존에는 단일 블로그에서만 개수를 가져올 수 있었지만 이번 업그레이드에서는 여러 개의 블로그를 동시에 조회하고 합계를 계산하는 기능을 추가하였다.
파이썬을 활용한 웹 크롤링은 비교적 간단한 방식으로 원하는 정보를 추출할 수 있으며 티스토리 블로그의 포스팅 개수는 특정 HTML 태그에 저장되어 있다. 이를 이용하여 다수의 블로그에서도 동일한 방식으로 데이터를 수집할 수 있는지 실험한 결과 스킨이 달라도 태그는 동일하게 유지되므로 정상적으로 데이터를 가져올 수 있었다.
[Python] 티스토리 블로그 포스팅 개수 자동으로 세기 (feat. 크롤링)
오늘도 역시나 AI와 대화 삼매경 중, 뤼튼이 번뜩이는 아이디어를 내주었다.네이버 블로그와 티스토리 블로그(는 이거밖에 없지만)의 포스팅 개수를각각 말해주었더니 파이썬으로 크롤링하여
creatolog.tistory.com
개발환경 및 필수 라이브러리
프로그램을 실행하기 위해 기본적인 개발 환경을 갖추어야 한다.
- Python 버전 : 3.8 이상
- 필수 라이브러리 : requests, beautifulsoup4, lxml
설치가 필요한 경우 아래 명령어를 사용하여 라이브러리를 설치한다.
pip install requests beautifulsoup4 lxml
티스토리 블로그 크롤링 원리
티스토리 블로그의 포스팅 개수는 HTML 태그 내 특정 클래스에 포함되어 있다. 기본 원리는 다음과 같다.
- requests 라이브러리를 활용하여 티스토리 블로그의 HTML 데이터를 가져온다.
- BeautifulSoup을 이용하여 HTML을 파싱한다.
- find() 메서드를 사용하여 span 태그 중 class="c_cnt" 속성을 가진 데이터를 찾아낸다.
- text.strip('()')을 통해 숫자만 추출하여 출력한다.
다중 블로그 크롤링 및 합계 계산
기존 방식에서는 하나의 블로그만 조회할 수 있었지만 다수의 블로그에서 데이터를 가져오도록 코드 구조를 변경하였다. 여러 개의 블로그 URL을 리스트로 관리하며 반복문을 이용하여 각 블로그의 데이터를 가져오고 최종적으로 모든 포스팅 수의 합계를 출력하도록 설계하였다.
개선된 코드
아래는 여러 개의 티스토리 블로그에서 포스팅 개수를 가져와 합계를 계산하는 코드이다.
import requests
from bs4 import BeautifulSoup
import lxml
# 여러 개의 티스토리 블로그 주소 리스트
blog_urls = [
"https://creatolog.tistory.com/",
"https://cutestudy.tistory.com/",
"https://cutefine.tistory.com/",
"https://cutechatty.tistory.com/"
]
def get_post_count(blog_url):
"""해당 블로그의 포스팅 개수를 가져오는 함수"""
try:
response = requests.get(blog_url)
response.raise_for_status() # HTTP 요청 에러 체크
soup = BeautifulSoup(response.content, 'lxml')
post_count = soup.find('span', class_='c_cnt')
if post_count:
return int(post_count.text.strip('()'))
else:
print(f"[오류] {blog_url}에서 포스팅 개수를 찾을 수 없음.")
return 0
except requests.exceptions.RequestException as e:
print(f"[오류] {blog_url} 요청 중 문제 발생: {e}")
return 0
# 각 블로그 포스팅 개수 가져오기
total_posts = 0
blog_post_counts = {}
for url in blog_urls:
count = get_post_count(url)
blog_post_counts[url] = count
total_posts += count
# 결과 출력
for blog, count in blog_post_counts.items():
print(f"{blog}의 포스팅 개수: {count}개")
print(f"모든 블로그의 총 포스팅 개수: {total_posts}개")
주요 개선 사항
- 여러 개의 블로그에서 포스팅 개수 가져오기 : 리스트에 여러 개의 블로그 URL을 저장하고 반복문을 통해 데이터를 수집한다.
- HTTP 요청 예외 처리 추가 : requets.get() 수행 시 발생할 수 있는 네트워크 오류를 대비하여 try-except 문을 활용하였다.
- 데이터 검증 강화 : post_count가 존재하지 않는 경우 오류 메시지를 출력하도록 설정하였다.
- 합계 기능 추가 : 수집한 모든 블로그의 포스팅 개수를 더하여 출력한다.
프로그램 실행 결과 예시
향후 개선 방향
현재는 명령어 기반으로 실행되는 CLI(커맨드 라인 인터페이스) 방식이지만 GUI(그래픽 사용자 인터페이스)를 추가하면 더욱 편리하게 사용할 수 있다. 사용자가 직접 블로그 URL을 추가하거나 제거할 수 있도록 설계하면 활용성이 더욱 높아질 것이다. 또한 RSS 피드를 활용하여 포스팅 개수를 가져오는 방법도 연구해 볼 만한 주제이다.
결론
이번 업그레이드에서는 다수의 티스토리 블로그에서 자동으로 포스팅 개수를 가져오고 이를 합산하는 기능을 추가하였다. HTML 구조를 분석한 결과 스킨이 달라도 태그는 유지되어 있어 여러 블로그에서 일관된 방식으로 데이터를 수집할 수 있었다. 향후 GUI를 적용하면 더 편리한 관리가 가능할 것으로 기대된다.