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

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

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

강의 3: 티스토리 블로그 크롤링 이해 및 사용 준비

목표: 이 강의의 목표는 Python을 사용하여 티스토리 블로그에서 웹 크롤링을 통해 데이터를 수집하는 방법을 학습하는 것입니다.


1. 웹 크롤링 기본 개념

1.1 웹 크롤링이란 무엇인가?

  • 웹 크롤링은 웹 페이지의 데이터를 자동으로 수집하는 과정입니다. 크롤러라고 불리는 프로그램이 웹사이트를 탐색하고, 페이지에서 데이터를 가져옵니다.
  • 웹 스크래핑은 웹 페이지의 구조화된 데이터를 추출하는 기술입니다. 스크래핑은 보통 크롤링의 한 부분으로, HTML 문서에서 특정 데이터를 추출하는 과정입니다.

1.2 크롤링과 스크래핑의 차이

  • 크롤링은 웹사이트를 자동으로 탐색하며 여러 페이지를 방문하고 데이터를 수집하는 과정입니다.
  • 스크래핑은 방문한 웹 페이지에서 필요한 정보를 추출하는 작업입니다. 크롤링이 웹 탐색과 데이터 수집을 포함하는 더 큰 개념이라면, 스크래핑은 그 데이터 중 원하는 정보를 추출하는 작업에 집중됩니다.

1.3 웹 크롤링의 윤리적 고려사항

  • robots.txt 파일: 대부분의 웹사이트는 robots.txt 파일을 통해 크롤러가 접근 가능한 영역을 제한합니다. 크롤러는 이 파일을 존중해야 합니다.
  • 사이트의 규정 준수: 사이트의 이용 약관이나 법적 규정을 준수해야 합니다. 과도한 크롤링은 서버 부하를 일으킬 수 있으며, 법적 문제가 발생할 수 있습니다.

2. Python의 BeautifulSoup 및 Requests 라이브러리 소개

2.1 requests 라이브러리를 사용하여 웹 페이지 가져오기

  • requests는 Python에서 HTTP 요청을 보내고, 웹 페이지의 내용을 가져올 수 있는 간단한 라이브러리입니다.
  • GET 요청을 통해 웹 페이지의 HTML 코드를 가져오는 방식으로 작동합니다.

2.2 BeautifulSoup을 사용하여 HTML 문서를 파싱하고 원하는 데이터 추출하기

  • BeautifulSoup은 HTML 및 XML 문서를 파싱하고, 문서의 요소를 쉽게 추출할 수 있는 Python 라이브러리입니다.
  • BeautifulSoup을 사용하면 특정 HTML 태그나 클래스에 접근하여 데이터를 추출할 수 있습니다.

3. 티스토리 블로그 크롤링

3.1 특정 블로그 페이지에서 글 목록을 가져오기

  • 티스토리 블로그 페이지에서 글 목록을 가져오려면, 해당 페이지의 HTML 코드를 파싱하고, 각 글의 제목, URL, 작성 날짜 등을 추출해야 합니다.

3.2 글 제목, 날짜, URL 등 필요한 정보 추출하기

  • BeautifulSoup을 사용하여 각 글의 제목, URL, 날짜 등을 HTML 요소에서 추출할 수 있습니다.

실습: 티스토리 블로그 글 목록 크롤링하기

다음은 티스토리 블로그에서 글 목록을 크롤링하는 Python 코드를 작성하는 실습입니다.

ClawlingDemo.ipynb 라는 노트북을 만들어서 작업 진행합니다.

코드 예제:

import requests
from bs4 import BeautifulSoup

# 티스토리 블로그 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')

    # 각 글의 제목, 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 = article.find('span', class_='date').get_text(strip=True)  # 작성 날짜
        
        # 추출한 정보 출력
        print(f"Title: {title}")
        print(f"URL: {full_url}")
        print(f"Date: {date}")
        print("-" * 40)
else:
    print(f"Failed to retrieve the blog page. Status code: {response.status_code}")

크롤링 실행 결과

 

코드 설명:

  • requests.get(blog_url): 지정된 URL에서 HTML 페이지를 가져옵니다.
  • BeautifulSoup(response.content, 'html.parser'): HTML 페이지를 파싱하여 BeautifulSoup 객체를 생성합니다.
  • soup.find_all('article', class_='article-type-common'): 'article-type-common' 클래스가 적용된 모든 div 태그를 찾습니다. 이 태그들이 각 글을 나타냅니다.
  • post.find('a', class_='title').get_text(): 각 글의 제목을 추출합니다.
  • post.find('a')['href']: 글의 URL을 추출합니다.
  • post.find('span', class_='date').get_text(): 글의 작성 날짜를 추출합니다.

이 실습을 통해 수강자는 웹 크롤링의 기본 개념을 이해하고, Python을 사용하여 티스토리 블로그에서 글 목록을 크롤링하고 필요한 정보를 추출하는 방법을 학습할 수 있습니다.

728x90