💡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에 사용 가능하겠구나 !
'데브코스 > TIL' 카테고리의 다른 글
[TIL] 3주차_Day9: 파이썬 웹 크롤링(4) (0) | 2023.11.01 |
---|---|
[TIL] 3주차_Day8: 파이썬 웹 크롤링(3) (0) | 2023.10.31 |
[TIL] 3주차_Day6: 파이썬 웹 크롤링(1) (0) | 2023.10.24 |
[TIL] 2주차_Day5: 자료구조/알고리즘 풀기(5) (1) | 2023.10.20 |
[TIL] 2주차_Day4: 자료구조/알고리즘 풀기(4) (0) | 2023.10.19 |