Python과 ChatGPT API를 활용한 자동화 로봇 개발

4_Python과 ChatGPT API를 이용한 블로그 자동화 프로그램 개발

atomicdev 2024. 8. 15. 16:07
728x90
 

강의 4: 티스토리 글 목록 필터링 및 처리

목표

이 강의의 목표는 크롤링한 티스토리 블로그의 글 목록에서 특정 조건에 맞는 글을 필터링하고, 원하는 데이터를 추출하는 방법을 학습하는 것입니다. 이 과정에서 Python의 BeautifulSoup와 datetime 모듈을 사용하여 웹 페이지에서 데이터를 크롤링하고, 특정 날짜 이후에 작성된 글을 필터링하는 방법을 배웁니다.

내용

  1. BeautifulSoup로 파싱한 데이터의 처리
    • HTML 파싱: 먼저, 웹 페이지의 HTML 구조를 이해하고 BeautifulSoup을 사용해 HTML을 파싱합니다. 이를 통해 블로그 글 목록을 가져오는 방법을 익힙니다.
    • 데이터 추출: 파싱한 HTML에서 필요한 정보를 추출합니다. 예를 들어, 글의 제목, URL, 작성 날짜 등을 추출합니다.
  2. 특정 조건에 따라 필터링하기
    • 조건 설정: 글 목록에서 원하는 데이터를 필터링하기 위해 특정 조건을 설정합니다. 이번 강의에서는 특정 날짜 이후에 작성된 글만 추출하는 방법을 배웁니다.
    • Python의 날짜 및 시간 처리 라이브러리 사용: Python의 datetime 모듈을 사용하여 날짜를 비교하고 필터링합니다. 이 모듈을 통해 글의 작성 날짜를 기준으로 필요한 글만 선택할 수 있습니다.
  3. 글 목록에서 최근 글만 필터링하여 처리
    • 필터링 및 출력: 필터링된 글 목록을 출력하거나 추가적으로 처리하는 방법을 학습합니다. 이렇게 필터링된 데이터를 기반으로 다양한 후속 작업을 수행할 수 있습니다.

실습: 특정 날짜 이후 작성된 블로그 글 목록 가져오기

이제 위의 내용을 기반으로 실습을 진행해보겠습니다. 목표는 특정 날짜 이후에 작성된 티스토리 블로그 글 목록을 가져오는 것입니다.

FilterDemo.ipynb 라는 노트를 만들어서 작업 진행합니다.

import requests
from bs4 import BeautifulSoup
from datetime import datetime

# 티스토리 블로그 URL 설정
blog_url = "https://atomicdev.tistory.com"

# 웹 페이지 가져오기
response = requests.get(blog_url)

# 상태 코드 확인 (200은 성공을 의미)
if response.status_code == 200:
    # BeautifulSoup을 사용하여 HTML 문서 파싱
    soup = BeautifulSoup(response.content, 'html.parser')
    
    # 글 목록이 포함된 article 태그를 찾음
    articles = soup.find_all('article', class_='article-type-common')

    # 필터링 기준 날짜 설정 (예: 2024년 8월 15일 이후의 글만 가져오기)
    filter_date = datetime.strptime("2024-08-15", "%Y-%m-%d")

    # 각 글의 제목, URL, 작성 날짜 추출 및 필터링
    for article in articles:
        title_tag = article.find('strong', class_='title')
        title = title_tag.get_text(strip=True)  # 글 제목
        url = article.find('a', class_='link-article')['href']  # 글 URL
        full_url = f"{blog_url}{url}"  # 전체 URL 생성
        date_str = article.find('span', class_='date').get_text(strip=True)  # 작성 날짜 문자열
        article_date = datetime.strptime(date_str, "%Y.%m.%d")  # 문자열을 datetime 객체로 변환

        # 특정 날짜 이후 작성된 글만 출력
        if article_date > filter_date:
            print(f"Title: {title}")
            print(f"URL: {full_url}")
            print(f"Date: {article_date.strftime('%Y-%m-%d')}")
            print("-" * 40)
else:
    print(f"Failed to retrieve the blog page. Status code: {response.status_code}")
특정일자 이후 작성된 글 목록 조회

실습 설명

  1. 웹 페이지 가져오기: requests 라이브러리를 사용하여 티스토리 블로그 페이지의 HTML을 가져옵니다.
  2. HTML 파싱 및 데이터 추출: BeautifulSoup으로 HTML을 파싱한 후, article 태그에서 글 제목, URL, 작성 날짜 등의 데이터를 추출합니다.
  3. 날짜 필터링: datetime 모듈을 사용하여 설정한 날짜(예: 2024년 8월 15일) 이후에 작성된 글만 필터링합니다.
  4. 결과 출력: 필터링된 글의 제목, URL, 작성 날짜를 출력하여 결과를 확인합니다.

요약

이 강의를 통해 웹 크롤링을 통해 수집한 데이터에서 특정 조건에 따라 데이터를 필터링하고, Python의 datetime 모듈을 사용하여 날짜 비교와 필터링 작업을 수행하는 방법을 학습했습니다. 이러한 기술은 다양한 웹 데이터 수집 및 분석 작업에 유용하게 활용될 수 있습니다.

 

728x90