본문 바로가기
SK shieldus Rookies 16기

[SK shieldus Rookies 16기] 클라우드 기반 스마트 융합 보안 과정 교육 정리(5일차)

by Challenge programmers 2023. 10. 27.

오늘 학습 주제

1. 웹 데이터 수집 및 웹의 이해

2. HTTP Client 모듈

3. Parsing

4. 웹 자동화 툴

 

 

 

 

웹 데이터 수집 및 웹의 이해


- 웹 데이터 수집 -

데이터 수집은 3단계로 구분된다

 

계획수집가공 및 저장

 

《 계획 단계 》 

어떤 데이트를 수집할 것인지 결정하고, 데이터의 원본 및 형식을 정한다

또한 데이터 수집에 필요한 도구와 기술을 선택한다

 

 수집 단계 》 

데이터를 수집하는 단계로 웹 크롤링, API 호출 또는 수동 데이터 입력과 같은 다양한 방법을 통해 수집한다

데이터를 수집하면서 데이터 품질을 유지하고, 저작권 및 개인정보 보호와 관련된 법률을 준수해야 한다

 

 가공 및 저장 단계 》 

수집한 데이터를 가공하여 필요한 형식으로 정리하고, 데이터베이스 또는 파일 시스템에 저장한다

데이터를 분석할 수 있도록 준비한다


- 웹 데이터 수집 방법 -

웹 데이터 수집 방법으로는 [스크래핑]과 [크롤링]이 있다

 

 스크래핑

웹 페이지의 특정 부분에서 원하는 데이터를 추출하는 기술     

 

 크롤링  

웹 페이지를 자동으로 탐색하여 원하는 데이터를 추출하는 방법

 


 -웹 데이터 수집 시 주의사항 -

웹 사이트의 정보는 기본적으로 저작물이다

저작권법 제30조 : 정보 해석을 목적으로 저작물을 복제/번안 가능

웹사이트의 자원을 독점하게 되면 다른 사람이 웹 사이트를 이용할 수 없다

무한 크롤러 사용 시 업무방해 혐의 적용이 가능하다

 


웹 페이지

HTTP 프로토콜을 써서 어떤 URL에서 받아오는 HTML로 쓰인 문서

 

 

 

HTTP Client 모듈


Client 

서비스를 요청하는 프로그램 앱

 

Server 

요청에 대해 응답하는 프로그램으로 서비스를 제공한다

 

- 웹 페이지 해석 순서 -

1. Client가 Server에게 Contents를 요청(Request)한다

2. Server는 요청 받은 Contents를 Client에게 응답(Response)한다

3. 브라우저는 Server에서 받은 HTML을 해석하여 화면에 보여준다

 

- HTTP(Hyper Text Transper Protocol) -

인터넷에서 데이터를 전송하는데 사용되는 프로토콜, 규약

Client의 요청(Request)이 있을 때만 서버가 응답(Response)하는 단방향 통신

보안을 위해 데이터의 암호화를 통해 통신을 보호하는 HTTPS로 확장이 가능하다

 

Request Method 설명
GET 자료를 요청할 때 사용
POST 자료의 생성을 요청할 때 사용
PUT 자료의 수정을 요청할 때 사용
DELETE 자료의 삭제를 요청할 때 사용

 

- GET과 POST의 차이점 -

GET은 Body없이 Header만으로 전송이 되지만

POST는 Body에 query data가 들어간다

get과 post의 차이점

 

Status Code 설명
1xx (조건부 응답) 요청을 받았으며 작업을 계속함
2xx (성공) 클라이언트가 요청한 동작을 수신하여 이해했고 승낙했으며 성공적으로 처리했음을 나타냄
3xx (리다이렉션 완료) 클라이언트는 요청을 마치기 위해 추가 동작을 취해야 함
4xx (요청 오류) 클라이언트에 오류가 있음을 나타냄
5xx (서버 오류) 서버가 유효한 요청을 명핵하게 수행하지 못했음을 나타냄

requests 모듈을 이용하여 Naver 사이트에 GET 방식과 POST 방식으로 자료 요청

 

User-Agent 해더를 추가하여 사람이 접근한 것처럼 만드는 방법

 

 

 

 

Parsing


- Parsing -

웹 상의 자연어, 컴퓨터 언어 등의 일련의 문자열을 분석하는 프로세스

가공되지 않은 문자열에서 필요한 부분을 추출하여 의미있는(구조화된) 데이터로 만드는 과정

파이썬에서 가장 많이 사용되고 있는 모듈로는 BeautifulSoup, Requests가 있다

 

Requests로 Html 소스를 확보하고, 이것을 파싱하기 좋은 객체로 변환하는 과정이다 html.parser는 구문분석기다

 

 

웹 자동화 툴


- 웹 데이터를 얻는 방법 -

HTTP request Selenium
requests, scrapy selenium
속도가 빠르다 속도가 느리다
javascript 실행이 불가능하다 동적 페이지(javascript)도 크롤링이 가능하다

 

- selenium -

웹 브라우저 자동화 Tool

직접 브라우저를 실행하여 마우스 클릭, 키보드 입력 등의 이벤트를 코드를 통해 발생

실제 브라우저를 실행하기 때문에 웹 데이터의 훼손이 없다

단, 속도가 느리다

 

selenium을 통해 youtube사이트 접속
fine_element()를 통해 특정 HTML 요소를 찾을 수 있다

 

- Bot NO! Human OK!

자바스크립트가 실행되기 전의 페이지는 아무것도 없이 비어 있을 수 있다

폼을 전송하거나 POST 요청을 보낼 때는 서버에서 기대하는 모든 데이터를 보내야 한다

쿠키가 함께 전송되는지 확인한다

403 Forbidden 에러를 받는 다면 IP가 차단되었을 수도 있다

사이트를 너무 빨리 이동하지 않는다

헤더를 바꾼다

 

 

 

🔗Project

 

 

참고

https://medium.com/@lidiach217/web-%EA%B8%B0%EB%B3%B8%EA%B0%9C%EB%85%90-http-%ED%86%B5%EC%8B%A0-cf5f89906c8e