Cloud & Platform
Python Web Crawling 정리
Python Web Crawling 정리 학습 내용을 정리한 백필 노트입니다.
이 글은 2025년 학습 기록을 블로그 형식으로 정리한 백필 노트입니다.
1. 준비
-
프로젝트 폴더 구조:
Documents/project/code와Documents/project/data폴더 생성
2. 웹 크롤링 이해
- 웹 크롤링: 검색 엔진이 자동으로 웹을 탐색해 링크/정보를 수집.
- 웹 스크레이핑: 웹 페이지에서 원하는 특정 정보를 추출.
- 차이: 크롤링은 링크/페이지 탐색, 스크레이핑은 실제 데이터 추출.
- 프로세스:
- HTTP 요청 → 응답 확인
- 데이터 추출 → 전처리
- 파일 저장
- 주의사항:
- 무단 수집 시 저작권/법률 위반 가능
- 반드시
robots.txt확인 및 사이트 관리자 승인 필요
3. HTTP 통신 기초
- HTTP: 클라이언트–서버 간 데이터 전송 프로토콜
- 요청 방식: GET (조회용), POST (데이터 생성/업데이트)
- URL 구조: Scheme + Domain + Path + Query String
- 응답 코드:
- 2XX 성공
- 3XX 리다이렉트
- 4XX 클라이언트 오류
- 5XX 서버 오류
- Python 코드:
requests.get(url),requests.post(url, json, headers)
4. HTML 요소 기초
- HTML: 웹 페이지 구조 정의 (태그, 속성, 콘텐츠 포함)
- 주요 태그:
<h1>~<h6>,<p>,<table>,<a>,<img>,<div>등 - CSS 선택자 / XPath: HTML 요소 선택 방식
- BeautifulSoup 활용:
soup.select("CSS 선택자")soup.find_all(name="태그")
5. 크롬 개발자 도구 활용
- Network 탭: HTTP 요청/응답 확인
- Elements 탭: HTML 요소 탐색
- 활용: 요청 URL, Header, Payload 확인 → 크롤링 코드에 반영
6. 웹 크롤링 실습
(1) 현재 주가 수집
- 대상: 네이버 증권
- 방법: 종목코드 활용 →
requests→BeautifulSoup - 함수 생성:
stock_price(ticker)→ 현재 주가 반환
(2) 시가총액 상위 50위 주가 수집
- 대상: 네이버 증권 시가총액 페이지
- 데이터: 상위 50개 종목명과 현재가 추출
- 리스트 컴프리헨션 활용
(3) 주요 시장지표 수집
- 대상: 네이버 증권 시장지표 페이지
- 수집: 화폐 단위, 환율 정보
BeautifulSoup클래스 상속 → 사용자 정의 메서드(html_text)로 확장
(4) 증권 주요 뉴스 수집
- 대상: 네이버 증권 주요 뉴스
- 수집: 뉴스 제목, 링크, 등록일
pandas.DataFrame으로 저장
7. Open API 활용
- API 개념: 프로그램 간 데이터 교환 인터페이스
- Open API: 인증 후 누구나 사용 가능, 보통 XML/JSON 형식 응답
- 이용 프로세스:
- 활용 신청
- API Key 발급
- HTTP 요청 시 Key 포함
- XML/JSON 응답 처리
- 데이터 처리 라이브러리:
- XML →
xmltodict - JSON →
json
- XML →
- 국내 주요 Open API:
- 공공데이터포털, 서울열린데이터광장, 경기데이터드림, ECOS, OPEN DART, KOSIS