Web

1.
[Client] 브라우저 실행
2.
[Client] URL 주소 입력
3.
[Client] 클라이언트가 서버에게 컨텐츠 요청(request)
기본 지식






데이터 수집 개요
BeautifulSoup
•
파싱을 도와주는 강력한 python 라이브러리
•
쉽고 간결하며, 정규식을 작성할 필요 없이 tag, id, class 등의 이름으로 쉽게 파싱 가능
•
설치: pip install beautifulsoup4
주요 함수
주요 기능 | 설명 |
find_all(태그) | 태그가 포함되어 있는 모든 문장 반환 |
find(태그) | 태그가 포함되어 있는 모든 문장 중 가장 첫번째 문장 반환 |
select(선택자) | 선택자(selector)를 사용한 데이터선택 |
사용 방법
find_all(), find()
BeautifulSoup
[실습] 한국 거래소 파일 다운로드 받기
•
크롤링 사이트: http://marketdata.krx.co.kr
•
참고 소스코드: 주피터노트북
1.
브라우저 > 검사 > 네트워크 탭 실행
2.
다운로드 받을 파일 선택
3.
request 정보 값 설정
4.
response 값 저장
5.
두번째 request를 첫번째 response값을 활용하여 설정
6.
response 데이터를 엑셀로 저장(byte를 excel로 변환)
request > POST 방식
requests
•
Python으로 HTTP request를 서버로 보내기 위한 패키지
•
속도가 빠름
•
Javascript 실행은 불가능함
사용 방법
구분 | 주요 기능 | 설명 |
request | requests.get(‘사이트 주소’) | HTTP GET 요청 |
requests.post(‘사이트 주소’, data = {‘key’ : ‘value’}) | HTTP POST 요청 | |
response | response.status_code | 상태코드
(200: 성공, 403: 권한없음, 404: 찾을 수 없음) |
response.text | 서버의 응답 형태가 html 문서인 경우 | |
response.content | 서버의 응답 형태가 바이트(이미지 등)인 경우 | |
response.json() | 서버의 응답 형태가 json인 경우 내장 디코더를 사용 |
requests > GET 방식
selenium
•
동적으로 브라우저 제어
•
직접 브라우저를 실행하여 python code로 mouse click, keyboard input 등의 event를 발생시킴
•
실제 브라우저로 실행한 것과 동일한 값을 얻을 수 있음
•
속도가 느림
•
pip install selenium

사전 준비 - 크롬 드라이버
•
PC에 설치된 크롬 버전 확인
•
크롬 드라이버 설치 페이지 이동
selenium
공공데이터
•
크롤링 사이트: https://www.data.go.kr/
•
참고 소스코드: 주피터노트북
사전준비
•
공공데이터포털 회원가입
•
'아파트매매 실거래자료'검색
•
OPEN API에서 XML 형태로 제공하는 항목 선택
•
활용 신청 > 기타
•
마이페이지 > 일반 인증키(UTF-8), End Point, hwp 문서 확인
크롤링 절차
1.
URL request
2.
response 데이터 파싱(json)
OpenAPI
미니 프로젝트
1) 파일 업로드 주소
2) 업데이트 파일
•
파이썬 소스코드(.py or ipynb) : 예: 네이버주가분석_홍길동.ipynb
◦
파일명 형태: ㅇㅇ분석_이름.ipynb
네이버주가분석_홍길동.ipynb
•
보고서(자유양식)
예: 네이버주가분석_홍길동.pptx
- 크롤링한 사이트 url 주소, 수행 방법, 결과, 어려웠던 점, 새로 시도해본 내용 등
미니 프로젝트