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
'Python과 ChatGPT API를 활용한 자동화 로봇 개발' 카테고리의 다른 글
5_Python과 ChatGPT API를 이용한 블로그 자동화 프로그램 개발 (38) | 2024.08.15 |
---|---|
4_Python과 ChatGPT API를 이용한 블로그 자동화 프로그램 개발 (26) | 2024.08.15 |
2_Python과 ChatGPT API를 이용한 블로그 자동화 프로그램 개발 (37) | 2024.08.15 |
1_Python과 ChatGPT API를 이용한 블로그 자동화 프로그램 개발 (33) | 2024.08.15 |
0_Python과 ChatGPT API를 이용한 블로그 자동화 프로그램 개발 (4) | 2024.08.15 |