파이썬 실전 미니 자동화 프로젝트
- 1. 파이썬 자동화 미니 프로젝트 실전 정리, 설정부터 cron까지 한 번에 완성
- 2. 파이썬 설치와 VS Code 세팅 방법 완전 정리
- 3. 파이썬 변수와 자료형 정리 실전 가이드, list dict JSON까지 한 번에
- 4. 파이썬 조건문 반복문 실전 정리, if for로 자동화 흐름 이해하기
- 5. 파이썬으로 로그와 설정파일 다루는 법, 파일 읽기 쓰기 핵심 패턴
- 6. 파이썬 JSON 파일 읽기 쓰기 실전 정리, 설정 자동화까지 한 번에
- 7. 파이썬 requests HTTP 요청 실전 정리, API 호출과 응답 처리 완전 가이드
- 8. 파이썬 API 인증 실전 정리, API Key 토큰 헤더 처리 완전 가이드
- 9. 파이썬 크롤링 기초 실전 정리, requests BeautifulSoup로 데이터 수집하기
- 10. 파이썬 예외 처리 실전 정리, try except로 자동화 안정성 높이기
- 11. 파이썬 logging 모듈 실전 정리, 로그 처리와 디버깅 운영 가이드
- 12. 파이썬 스케줄링 자동화 실전 정리, cron으로 주기 실행 완성
![]()
크롤링이 자동화에서 차지하는 위치
크롤링과 API의 차이
API는 공식적으로 제공되는 데이터 통로입니다.
크롤링은 HTML 페이지를 직접 분석해 데이터를 추출합니다.
API가 없을 때 크롤링이 대안이 됩니다.
외주 코드에서 크롤링이 등장하는 이유
모든 서비스가 API를 제공하지는 않습니다.
기존 웹 페이지에서 정보를 수집해야 하는 경우가 많습니다.
이때 requests와 BeautifulSoup 조합이 사용됩니다.
크롤링의 기본 흐름
요청으로 HTML을 가져옵니다.
HTML을 파싱해 구조를 분석합니다.
필요한 요소만 추출합니다.
이번 편에서 다룰 범위
정적 HTML 페이지 크롤링만 다룹니다.
자바스크립트 렌더링 페이지는 포함하지 않습니다.
실무에서 가장 많이 쓰는 기본 패턴만 정리합니다.
크롤링을 위한 기본 준비
필수 라이브러리 구성
requests는 HTML을 가져오는 역할을 합니다.
BeautifulSoup은 HTML을 분석하고 탐색하는 역할을 합니다.
두 라이브러리는 항상 함께 사용됩니다.
pip install requests beautifulsoup4
기본 import 구조
requests와 BeautifulSoup을 각각 import합니다.
BeautifulSoup은 bs4 패키지에서 불러옵니다.
외주 코드에서도 이 형태가 거의 고정입니다.
import requests from bs4 import BeautifulSoup
크롤링 대상 페이지 확인
브라우저 개발자 도구로 HTML 구조를 먼저 확인합니다.
태그와 클래스 구조를 파악하는 것이 핵심입니다.
이 과정을 생략하면 크롤링 성공률이 급격히 떨어집니다.
robots.txt 기본 인식
사이트의 robots.txt는 크롤링 허용 범위를 정의합니다.
무시하고 크롤링하면 문제가 될 수 있습니다.
실무에서는 반드시 확인하는 습관이 필요합니다.
requests로 HTML 가져오기
GET 요청 기본 패턴
requests.get으로 페이지 HTML을 요청합니다.
응답은 문자열 형태의 HTML입니다.
상태 코드 확인은 필수입니다.
response = requests.get("https://example.com")
html = response.text
User-Agent 헤더 지정
기본 요청은 차단될 수 있습니다.
브라우저처럼 보이도록 User-Agent를 지정합니다.
외주 크롤링 코드에서 거의 항상 포함됩니다.
headers = {
"User-Agent": "Mozilla/5.0"
}
response = requests.get("https://example.com", headers=headers)
응답 실패 대응
403이나 404 응답이 나올 수 있습니다.
상태 코드에 따라 처리 로직을 분기해야 합니다.
자동화 안정성에 중요한 부분입니다.
HTML 확인 습관
크롤링이 안 될 때는 HTML을 먼저 출력해봅니다.
예상과 다른 구조인지 확인해야 합니다.
문제 원인을 가장 빠르게 찾는 방법입니다.
BeautifulSoup으로 HTML 파싱하기
BeautifulSoup 객체 생성
HTML 문자열을 BeautifulSoup 객체로 변환합니다.
파서로 html.parser를 가장 많이 사용합니다.
이 객체를 기준으로 모든 탐색이 이루어집니다.
soup = BeautifulSoup(html, "html.parser")
태그 하나 찾기
find는 조건에 맞는 첫 번째 태그를 찾습니다.
단일 요소 추출에 사용됩니다.
없을 경우 None을 반환합니다.
title = soup.find("title")
print(title.text)
여러 태그 찾기
find_all은 조건에 맞는 모든 태그를 리스트로 반환합니다.
목록 데이터 추출에 자주 사용됩니다.
for 반복문과 함께 사용합니다.
links = soup.find_all("a")
for link in links:
print(link.text)
클래스와 속성으로 찾기
class나 id로 원하는 요소를 좁힐 수 있습니다.
실무 크롤링의 핵심 기술입니다.
HTML 구조 분석이 중요한 이유입니다.
데이터 추출 실전 패턴
텍스트 데이터 추출
태그의 text 속성으로 내부 텍스트를 가져옵니다.
공백과 줄바꿈이 포함될 수 있습니다.
후처리 과정이 필요한 경우가 많습니다.
속성 값 추출
링크 주소나 이미지 URL은 속성에 들어 있습니다.
get 메서드로 안전하게 접근합니다.
외주 크롤링에서 가장 많이 쓰이는 패턴입니다.
for link in links:
href = link.get("href")
print(href)
없는 요소에 대한 방어
HTML 구조 변경으로 요소가 없을 수 있습니다.
None 체크는 필수입니다.
자동화 스크립트 안정성에 직결됩니다.
리스트 형태로 데이터 수집
추출한 데이터를 리스트에 담아 관리합니다.
이후 파일 저장이나 API 전송으로 이어집니다.
앞선 편들과 자연스럽게 연결됩니다.
크롤링 시 반드시 알아야 할 주의사항
요청 빈도 제한
짧은 시간에 많은 요청을 보내면 차단될 수 있습니다.
time.sleep으로 요청 간 간격을 둡니다.
실무에서는 매우 중요한 부분입니다.
사이트 정책 확인
이용 약관과 robots.txt를 확인해야 합니다.
금지된 크롤링은 법적 문제가 될 수 있습니다.
외주 작업 시 특히 주의가 필요합니다.
HTML 구조 변경 대비
웹 페이지 구조는 언제든 바뀔 수 있습니다.
크롤링 코드는 유지보수가 필요합니다.
에러 로그를 통해 빠르게 감지해야 합니다.
API 제공 여부 우선 확인
가능하다면 크롤링보다 API를 우선 사용합니다.
API가 안정성과 유지보수 측면에서 훨씬 유리합니다.
크롤링은 최후의 수단입니다.
다음 편 예고와 학습 흐름 정리
이번 편에서 반드시 이해해야 할 핵심
크롤링은 HTML 구조를 읽는 능력이 핵심입니다.
requests와 BeautifulSoup 조합이 기본입니다.
데이터 추출은 방어적으로 설계해야 합니다.
실무 자동화에서의 위치
크롤링은 데이터 수집 자동화의 출발점입니다.
파일 저장과 API 전송으로 자연스럽게 확장됩니다.
앞선 모든 편의 내용이 여기서 결합됩니다.
다음 편에서 다룰 내용
다음 편에서는 try except를 활용한 예외 처리를 다룹니다.
네트워크 오류와 파싱 오류 대응을 설명합니다.
자동화 스크립트를 실제 운영 가능한 수준으로 끌어올립니다.
추천 연습 방법
구조가 단순한 웹 페이지 하나를 골라 직접 크롤링해보세요.
HTML 구조가 바뀌었을 때 코드가 어떻게 깨지는지 확인해보는 것도 도움이 됩니다.
수집한 데이터를 파일로 저장하는 흐름까지 연결해보면 이해가 확실해집니다.