본문 바로가기

데브코스/TIL

[TIL] 3주차_Day7: 파이썬 웹 크롤링(2)

💡Today I Learned

  • 파이썬을 이용한 웹 크롤링 기술에 대한 두 번째 강의를 진행했습니다.
  • HTTP 프로토콜, HTML의 구조에 대한 개념
  • 파이썬을 이용해 http 통신 코드로 구현해보기 

 


1. 인터넷과 웹

: 컴퓨터 한 대 한 대씩 네트워크로 연결 이 네트워크를 묶어 근거리 지역 네트워크(LAN) 구성 LAN들을 묶어 범지구적으로 연결된 네트워크=인터넷

: 인터넷 망 위에서 정보를 교환할 수 있는 환경, 시스템 (WWW, Web) 탄생

 

2. 웹에서 정보 주고받기

: 클라이언트(Cllient) - 정보를 요청하는 컴퓨터

: 서버(Server) - 정보를 제공하는 컴퓨터

: 클라이언트가 서버에 작업 요청 서버는 요청에 대해서 작업 수행 → 수행한 작업의 결과를 클라이언트에게 응답(응답 or 요청 이상한데요..?? or etc)

 

3. HTTP의 구조

: 웹 상에서 client ↔ server 사이 정보를 주고받기 위한 약속

: HTTP request ↔ HTTP response

: Host(받는 사람 이름) + Resource(받는 사람 주소) + Method(배송 방법)

: HTTP Request = Head(송장_보내는 사람, 받는 사람, 배송 방법, etc..) + Body(내용물)

: HTTP Response = 시그널(Status code_200 or 404 or 503 etc..) + 정보(request로 요청했던)

 

4. 웹 사이트, 웹 페이지

: 웹 속에 있는 문서 하나 = 웹 페이지(html 형식)

: 웹 페이지의 모음 = 웹 사이트

: 웹 브라우저 - http 형식으로 'html 요청'을 보내고, http 응답에 담긴 'html 문서=body'를 보기 쉬운 형태로 화면에 그려주는(=html 코드를 렌더링) 역할

 

5. HTML의 구조

: html element = <여는태그>콘텐츠</닫는태그> 형식

: html 코드 = Head(문서에 대한 정보, 제목, 언어, ...) + Body(문서의 내용, 글, 이미지, 동영상, ...)

: 즉, 여러 태그로 감싼 요소(element)의 집합으로 이뤄짐!

*) 주의할 점: 웹 브라우저마다 지원하는 태그, 속성이 다름

 

6. 웹 크롤링 / 웹 스크래핑

: 웹 크롤링 - URL 링크를 타고 들어가며 웹 페이지의 정보를 반복적으로 가져오는 '인덱싱'  ex) 검색 엔진의 웹 크롤러

: 웹 스크래핑 - 특정 목적으로 웹 페이지들에서 우리가 원하는 정보를 '추출'  ex) 날씨 데이터, 주식 데이터 .. 가져오기 → 특정 정보가 어디에 있는지 명확히 알 때 이 정보를 자동화해서 어떻게 가져올지(에 대한 실습)

 

7. 윤리적 HTTP 요청을 위해 고려해야할 것들

: 웹 스크래핑/크롤링 통해 어떤 목적을 달성하고자 하는가? (영리 or 비영리?)

: 웹 스크래핑/크롤링이 서버에 영향을 미치지는 않는가? (요청-응답 트래픽 너무 많을 경우 서버에 과부하)

: REP(로봇 배제 프로토콜) - 웹 크롤러들은 이 규칙을 지키면서 크롤링을 진행함, 웹 페이지를 서버에 올릴 때 robots.txt(User-agent, Disallow, Allow 등의 키워드를 통해 사용) 와 같은 내용을 함께 기술함

  • User-agent: '나'를 대표하는 프로그램 (누가 이 요청을 보냈다)
  • ex) User-agent: *  (\n)  Disallow: /  → 모든 user-agent에 대한 접근을 불허

 

8. DOM(Document Object Model)

: 브라우저가 html 문서를 렌더링하는 가장 최초의 단계

: 렌더링 엔진 - 웹 문서 로드 후 파싱 진행 (html - head, body 의 tree 구조로 → 이것이 DOM)

 

9. 브라우저

: html 파싱 후 얻은 트리의 각 노드 = 객체로 간주함, 문서를 더 편리하게 관리할 수 있음

: 브라우저는 DOM Tree를 순회해서 특정 원소를 동적으로 변경, 검색할 수 있음 (for 동적 웹사이트 구성 ex: 필드 조작, attr 조작, 메소드 실행 etc...)

→ 파이썬으로 html 분석하는 html parser에 사용 가능하겠구나 !

 

 


 

반응형