2023/10/24

anso·2023년 10월 24일
0

TIL

목록 보기
7/20
post-thumbnail

HTTP

네트워크 : 여러 컴퓨터를 연결하는 형태

근거리 지역 네트워크 LAN : 네트워크를 묶은 것

인터넷 : 범지구적으로 연결된 네트워크

웹 : 인터넷에서 정보를 교환할 수 있는 환경

  • 클라이언트 : 정보 요청 / 서버 : 정보 제공
  • HTTP(Hypertext Transfer Protocol) : 웹 상에서 정보를 주고 받기 위한 약속

웹 상에서 정보를 주고 받는 방법

  1. Request : HTTP요청, 클라이언트가 서버에 정보 요청
  2. 요청에 대해 서버가 작업 수행
  3. Response : HTTP응답, 수행한 작업의 결과를 클라이언트에게 응답

정보의 종류

  • 제공하는 정보 : Host, Resource, Method, Path
  • 제공받는 정보 : Head(Content-type, date), Body

HTML

  • 웹 페이지 : 웹 속에 있는 문서
  • 웹 사이트 : 웹 페이지 모음
  • 웹 브라우저 : HTML요청을 보내고, HTTP응답에 담긴 HTML문서를 보기 쉬운 형태로 화면을 그려주는 역할

HTML 구조

<!DOCTYPE html>
<html>
	<head>	# 문서에 대한 정보
    	<title>Example Document</title>
    </head>
    
    <body>	# 문서의 내용
    	<h1>Hello World!</h1>
        <p>Hello world!</p>
    </body>
</html>

request

HTTP통신을 진행할 수 있는 python 라이브러리

  1. requests라이브러리 설치
%pip install requests
  1. 네이버의 홈페이지 요청(GET)
import requests

res = request.get("https://www.naver.com")
res

res.headers   # Header확인

res.text   # Body를 텍스트 형태로 확인
  1. 정보 갱신하기(POST)
    활용 사이트
payload = {"name":"Hello", "age":13}

res = requests.post("https://webhook.site/c525534c-34e5-42ca-bffb-800ac589aaba", payload)
res

res.status_code   # 상태코드 확인

웹 스크래핑

특정한 목적으로 특정 웹 페이지에서 데이터를 추출하는 것 → 데이터 추출
ex) 날씨 데이터 가져오기, 주식 데이터 가져오기

웹 크롤링

URL을 타고다니며 반복적으로 데이터를 가져오는 과정 → 데이터 색인
ex) 검색 엔진의 웹 크롤러

REP

Robot Exclusion Protocol : 로봇 배제 프로토콜

# 모든 user-agent 접근 불허
User-agent: *
Disallow: /

# 모든 user-agent 접근 허용
User-agent: *
Allow: /

# 특정 user-agent 접근 불허
User-agent: Name
Disallow: /
  • robot.txt : 웹 사이트 및 웹 페이지를 수집하는 로봇들의 무단 접근을 방지하기 위해 만들어진 로봇 배제 표준(Robot Exclusion Standard)이자 국제 권고안

  • 웹 서버를 요청할 때 사용자 에이전트 HTTP헤더에 나의 브라우저 정보를 전달하면 웹 서버가 나를 진짜 사용자로 인식할 수 있게됨
    나의 User Agent 확인

import requests

res = requests.get("https://www.naver.com/robots.txt")
print(res.text)

→ 출력 결과
User-agent: *
Disallow: /
Allow : /$

  • 'User-agent' : 규칙이 적용되는 대상 사용자 에이전트
  • 'Disallow' : 크롤링을 금지할 웹 페이지
  • 'Allow' : 크롤링을 허용할 웹 페이지

DOM

Document Object Model

  • DOM은 실제로 매우 복잡하게 구성됨
  • 각 노드를 객체로 생각하면 문서를 더욱 편리하게 관리 가능
  • 원하는 요소를 동적으로 변경하고 쉽게 찾을 수 있음
  • DOM Tree를 순회하여 특정 원소를 조작할 수 있음
var imgElement = document.createrElement("img");
document.body.appendChild(imgElement);
document.getElementByTagName("h2");

브라우저의 렌더링

브라우저는 HTML을 파싱해서 DOM을 생성, 이를 바탕으로 요소를 변경하거나 찾을 수 있음 → 파이썬으로 HTML을 분석하는 HTML Pareser 필요

0개의 댓글