미식가의 개발 일기

[KT 에이블스쿨(6기, AI)] 3주차, 웹 크롤링 본문

KT 에이블스쿨(6기, AI)

[KT 에이블스쿨(6기, AI)] 3주차, 웹 크롤링

대체불가 핫걸 2024. 9. 24. 17:08

< 3주차 후기>

3주차는 웹크롤링에 대해 학습했습니다!

  • 웹크롤링을 하는 방법 뿐만 아니라 웹이 돌아가는 전체 구조를 함께 설명해주셔서 웹크롤링 동작 과정을 더 잘 이해할 수 있었던 거 같습니다.
  • 여러가지 방식으로 크롤링을 진행 했는데 Scrapy 방식은 특정 규칙이 정해져 있는 프레임워크이다 보니 다른 방식보다 조금 더 복잡하고 어려웠던 거 같아요. 😅 그래도 실무에서는 거의 Scrapy로 크롤링을 진행한다고 하니 숙지해두면 좋을 거 같습니다!
  • 혼자서는 여러가지 시행착오를 겪어야만 알 수 있는 정보들을 미리 시행착오를 겪으시고 어떻게 해야 에러없이 접근할 수 있는지 알려주신 것이 많은 도움이 됐습니다. 😊

 

웹 요청-응답 과정

  • 아래 그림은 강사님께서 교육 내내 강조하셨던 웹 요청-응답 과정입니다! 이 그림 덕분에 웹 동작 과정을 한눈에 이해할 수 있었어요. 
  • 클라이언트가 웹 브라우저에서 특정 URL을 클릭하면 웹 브라우저가 HTTP요청을 생성하여 웹 서버를 통해 WAS로 전달합니다.
  • 클라이언트의 요청을 받은 WAS는 내부적으로 로직을 처리한 후 응답 데이터를 생성하여 클라이언트에게 전달합니다.
  • 웹 브라우저는 받은 응답을 해석하여 사용자가 볼 수 있는 형태로 화면에 표시합니다. 

 

URL 구성요소

※ 예시 URL
https://www.example.com:443/folder/page.html?id=123&search=abc#section1
  • 프로토콜: `http://`, `https://` → 리소스에 접근하는 방식, https는 암호화된 데이터를 주고받는다.
  • 호스트: `www.example.com` → 도메인 + 서브 도메인 
  • 도메인: `example.com` → 특정 웹사이트나 서버의 이름
  • 포트: `:80` http → 기본 포트, `:443` →  https 기본 포트
  • 경로: `/folder/page.html` → 서버 내의 특정 리소스(파일 경로, 디렉토리)
  • 쿼리 문자열: `?id=123&search=abc` →  서버에 전달되는 추가 정보
  • 프레그먼트: `#section1` → 페이지 내에 특정 위치로 이동하기 위한 참조

 

쿠키 vs 세션 vs 캐시

  • 쿠키 -> Client의 Browser에 저장하는 문자열 데이터(로그인 정보, 팝업 다시보지 않음 등), SSD 사용
  • 세션 -> Client의 Browser와 Server의 연결 정보(자동 로그인)
  • 캐시 -> Client, Server의 RAM(메모리, 입출력 빠름)에 저장하는 데이터

 

스크래핑 vs 크롤링

  • 스크래핑: 특정 페이지의 특정 데이터를 수집
  • 크롤링: 여러 페이지를 이동하며 데이터를 수집

 

웹 크롤링

수집 과정 

1. URL 찾기(Chrome Devtool)

2. request → response(data: html(정적 페이지), json(동적 페이지))

3. data → DataFrame으로 파싱

  • 동적 페이지: json list, dict df parsing
  • 정적 페이지: html bs4, BeautifulSoup(css-selector 사용)  df parsing (※실제 데이터와 개발자 도구에서 제공해주는 데이터 실제 데이터가 다를 수 있으므로  css-selector 수집 후 수정이 필요하다.)

 

Selenium

  • 브라우저 자동화 도구를 제공하는 라이브러리 
  • 동적 웹 페이지에서 JavaScript에 의해 생성된 콘텐츠를 수집해야 할 경우 유용
  • 필요한 구조나 규칙 X → 개발자가 원하는 대로 테스트를 설계하고 구성

 

Scrapy 

  • 웹 크롤링 프레임워크
  • 실무에서는 거의 Scrapy를 사용
  • 정적 웹 페이지에서 대량의 데이터를 수집할 때 유용 
  • 필요한 정보만 입력하면 크롤링 코드가 만들어지도록 구성(스크래핑을 위한 크롤러와 파서 기능 내장) 
  • 특정 규칙과 구조를 따라야 함 

 

 

 

반응형