파이썬으로 웹 크롤링 고급편 시리즈, 1강에 오신 걸 환영합니다!
이 강의는 단순한 HTML 태그 수집을 넘어서 로그인 유지, 동적 콘텐츠(AJAX), 이미지/파일 수집 등 실전에서 자주 필요한 고급 기술들을 단계별로 배워보는 실습형 강좌입니다.
1강에서는 본격적인 고급 기술에 들어가기 전, 크롤링을 제대로 하기 위해 꼭 알고 있어야 할 ‘기본기’를 다시 한 번 정리하고, 크롤링 환경을 실전에 맞게 세팅해보겠습니다.
1. 크롤링 윤리와 robots.txt의 중요성
웹사이트는 크롤러의 접근을 허용하거나 제한하기 위해 robots.txt라는 파일을 사용합니다. 크롤링 전에 항상 이 파일을 확인해야 합니다.
예시:
https://example.com/robots.txt
User-agent: *
Disallow: /private/
Allow: /public/
‘Disallow’로 지정된 경로는 크롤러의 접근이 금지된 영역입니다.
기술적으로 가능하더라도, 해당 사이트의 크롤링 정책을 존중하는 자세가 중요합니다.
2. User-Agent와 Header 설정
많은 사이트들은 크롤링 요청을 봇 트래픽으로 간주하고 차단합니다. 이를 피하려면 요청 시 Header에 브라우저 정보를 포함시켜야 합니다.
import requests
from bs4 import BeautifulSoup
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 Chrome/124.0.0.0 Safari/537.36"
}
url = "https://news.naver.com"
res = requests.get(url, headers=headers)
soup = BeautifulSoup(res.text, "html.parser")
print(soup.title.text)
이렇게 하면 서버는 해당 요청을 브라우저로부터 온 정상 요청으로 간주하게 됩니다.
3. HTML 구조 파악을 위한 도구 사용법
크롤링의 핵심은 원하는 데이터를 정확하게 위치 파악해서 추출하는 것입니다. 이를 위해 꼭 활용해야 할 것이 바로 브라우저 개발자 도구입니다.
크롬 개발자 도구 사용법:
- F12 또는 마우스 우클릭 → “검사”
- 요소 선택 후 오른쪽 클릭 → Copy → Copy selector
- 네트워크(Network) 탭으로 Ajax 통신 확인
HTML 태그와 속성 구조를 빠르게 파악할 수 있는 눈을 키우는 것이 중요합니다.
4. 기본기를 탄탄히: BeautifulSoup 활용법 다시 보기
# 뉴스 기사 제목 모으기 예시
soup = BeautifulSoup(res.text, "html.parser")
titles = soup.select(".news_title")
for t in titles:
print(t.get_text(strip=True))
select
: CSS 선택자 기반 태그 추출get_text()
: 태그 내부 텍스트만 추출strip=True
: 불필요한 공백 제거
이런 기본적인 기능들을 자유자재로 활용할 수 있어야, 나중에 로그인 유지, Ajax 응답 파싱 같은 고급 기술을 쉽게 이어갈 수 있습니다.
5. 다음 강의 예고
2강 – 로그인 유지가 필요한 사이트 크롤링: requests.Session() 실습
다음 강의에서는 로그인된 상태에서만 접근 가능한 페이지를 크롤링하는 방법을 배워보겠습니다. 세션 쿠키를 유지하면서 데이터를 요청하는 실전 예제를 통해 배워볼 거예요.
—
이 강의는 웹 자동화와 크롤링 실력을 끌어올리고 싶은 분들을 위한 고급 웹 크롤링 실습 시리즈입니다. 6강까지 단계별로 완주해보세요!