KT AIVLE School 3기/AIVLER 활동

[AIVLE_AI] 웹 크롤링

순제로 2023. 3. 16. 10:54
728x90

 

목    차
1. 사전지식 
2. 웹 크롤링 실습

 

 

 

[1. 사전지식]

1. Server / Client

- Server: 제공자

- Client: 요청자

 

2. URL(Uniform Resource Locator) 

- 왜 URL 사용할까? -> IP 주소 외우기 어려워서

- 구조 1 

출처: https://blog.naver.com/PostView.naver?blogId=ghdalswl77&logNo=222331240558&redirect=Dlog&widgetTypeCall=true&directAccess=false

- 구조2

https:// Protocol
news Sub Domain
naver.com Root Domain(Domain)
80 port
/main/ path
read.nhn page
?mode=LSD ~~~ 0009847211 query
#da_727145 fragment

- URL은 도메인을 포함한 경로이다.

- 이전글  DNS 정리 자료를 참고해보면 재밌다.

 

DNS개념과 DNS 쿼리 과정 예시 (전달자, 조건부 전달자) 끝판왕

DNS(Domain Name System) 컴퓨터의 경우 사용하는 운영체제도 서로 다르고, 프로그램의 경우 아예 구현된 언어가 다르기 위해 네트워크에서 이들이 통신할 수 있도록 하려면 공통된 통신 규약, 즉 프로

sooonzero.tistory.com

 

3. GET / POST

- GET과 POST는 HTTP 메서드로 클라이언트에서 서버로 무언가를 요청할 때 사용한다.

- GET: URL에 데이터가 포함(데이터 노출)된다. 길이 제한 있다.

- POST: BODY에 데이터가 포함(데이터 숨겨짐)된다.

 

4. 인터넷

- TCP/IP 통신 프로토콜을 이용해 정보를 주고받는 컴퓨터 네트워크

- 이전글 참고

 

IP, SUBNET, GATEWAY 의 개념 끝판왕

IP (Internet protocol) 네트워크에서 어떤 정보를 수신하고 송신하는 통신에 대한 규약 IP 주소(IP Address) 인터넷에 연결되어 있는 각 컴퓨터들이 갖고 있는 숫자로 이루어진 고유 주소 네트워크 주소

sooonzero.tistory.com

 

5. OSI 7 LAYER

- 1.physical - 2.data link - 3.network - 4.transport - 5.session - 6.presentation - 7.appication

- 이전글 참고

 

OSI 7 Layer 정리 끝판왕

OSI 7 계층이란? - ISO(국제표준화기구)에서 개발한 모델 - 네트워크에서 통신이 일어나는 과정을 7단계로 나눈 것 다른 제조업자의 시스템이라도 네트워크 유형에 관계없이 상호통신이 가능한 지

sooonzero.tistory.com

 

6. Cookie / Session / Cache

- Cookie: Client에 저장하는 문자열 데이터로 도메인 별로 따로 저장

- Session: Server에 저장하는 객체 데이터, 브라우저와 연결시 Session ID 생성

- Cache: Client나 Server의 메모리에 저장하여 빠르게 데이터 가져오는 목적의 저장소

 

7. HTTP Status Code

- 서버와 클라이언트가 데이터를 주고 받으면 주고 받은 결과로 상태 코드를 확인할 수 있다.

2xx success
3xx redirection (browser cache)
4xx request error
5xx server error

 

8. Web Language / Framework

Client: HTML, CSS(less sass), Javascript(vue.js, react.js, angelar.js, backborn.js)

Server: Python(Django, Flask), Java(Spring), Ruby(Rails), Javascript(Nodejs), Scala(Play)

 

9. Scraping / Crawling / Spider / Bot

- Scraping: 데이터를 수집하는 작업

- Crawling: 여러 페이지의 특정 데이터들을 수집하고 분류하는 작업

- Spider or Web crawler: 웹 데이터를 수집하는 소프트웨어

- Bot: 인터넷 상에서 자동화된 작업을 실행하는 소프트웨어

 

10. 동적 페이지와 정적 페이지

정적 페이지: 웹 브라우저에 화면이 한번 뜨면 이벤트에 의한 화면의 변경이 없는 페이지, 새로고침, URL 변경

동적 페이지: 웹 브라우져에 화면이 뜨고 이벤트가 발생하면 서버에서 데이터를 가져와 화면을 변경하는 페이지, 더보기, URL 변경 X

 

11. 웹 크롤링 방법

 1. requests 이용: 서버에서 바로 데이터 받아옴

 - json 문자열로 받아서 파싱: 주로 동적 페이지 크롤링에 사용

 - html 문자열로 받아서 파싱: 주로 정적 페이지 크롤링에 사용

 2. selenium 이용: 브라우저를 직접 열어서 데이터를 받아옴

 3. 속도 비교

 - requests json > requests html > selenium

 

12. 웹 크롤링 절차

1. 웹서비스분석(개발자도구): URL

2. request(URL) > response(data): data(json(str),html(str))

3. data(json(str), html(str)) > 파씽: response.json(), BeautifulSoup(css-selector) > DataFrame

 

 

 

[2. 웹 크롤링 실습]

 

#403 에러, 정상적인 데이터 요청 but 서버에서 어뷰징을 막은 경우 -> useragent 사용 -> 안되면 referer 추가
# robots.txt: 웹페이지의 크롤링 정책 설명한 페이지
 
api 사용해서 데이터를 사용하는 방법
api 키 값을 먼저 받는다
document를 보고 url 찾는다, api 아닌 동적 페이지 수집은 key값 필요없이 네트워크 트레픽 확인
api는 도큐먼트에서 찾는다는게 차이점

동적 페이지 수집과 api 수집은 거의 유사하다.
#selenium: 웹브라우져를 python 코드로 컨트롤해서 데이터 수집
#request 할때 401, 403, 500 등등의 에러가 발생하는 경우 > headers 수정해서 데이터 요청(user-agent, refere)
#API 이용: request token 수집 후 크롤링

 

728x90
반응형