본문으로 바로가기

Web site 경로를 따라가 데이터 찾기

category Python/python 2020. 11. 6. 10:48

절대경로

 : 전체경로

 

상대경로

 : 특정 위치를 기준으로 경로

 

urllib.parse.urljoin()

 : 상대경로를 절대경로로 변환하는 함수

 

 

from urllib.parse import urljoin

baseUrl = "http://www.example.com/html/a.html"

# 절대경로를 기준으로 상대경로가 잡힘

print(urljoin(baseUrl, "b.html"))
print(urljoin(baseUrl, "sub/c.html"))
print(urljoin(baseUrl, "../index.html"))
print(urljoin(baseUrl, "../image/a.png"))
print(urljoin(baseUrl, "../css/style.css"))


# urljoin 두 번째 매개 변수에 상대경로가 아닌 절대경로를
# 지정하는 경우("http://~") baseUrl은 의미가 없게 됨

print(urljoin(baseUrl, "http://www.other.com/aa"))
print(urljoin(baseUrl, "//www.another.com/bb/index.html"))

 

Http 통신의 특성

 : Connectionless - 클라이언트가 request를 서버에 보내면, 서버는 클라이언트에게 response를 보낸다.

                         그리고 접속을 끊는 특성

 : Stateless - 접속을 끊는 순간 클라이언트와 서버의 통신은 끝나고 상태정보는 유지하지 않는 특성

 : Cookie - 쿠키는 클라이언트에 저장되는 키와 값이 들어있는 작은 데이터 파일

쿠키는 이름, 값, 만료 날짜(쿠키의 저장기간), 경로정보가 들어있다.
쿠키는 일정시간동안 데이터를 저장할 수 있어서 로그인 상태를 유지한다.
쿠키는 클라이언트의 상태정보를 유저의 하드 디스크에 저장하였다가 필요할 때 참조, 재사용한다.

ex) 팝업창이 뜰 때 "오늘 하루 보지 않음"을 체크하면 오늘은 창이 뜨지 않는다.
방문사이트에서 아이디와 비밀번호를 저장하겠습니까?라고 메시지가 나오면 쿠키에 저장하겠냐라는 의미이다

 

 

세션(Session)

 : 세션은 클라이언트와 웹 서버간 네트워크 연결이 지속 유지되고 있는 상태를 말한다.

 : 즉, 사용자가 브라우저를 열어 서버에 접속한 뒤 접속을 종료할 때까지를 말한다

 : HTTP프로토콜은 비접속형 프로토콜이기에, 매 접속시마다 새로운 네트워크 연결이 이루어지는데,

   세션이 연결유지를 가능하게 해준다.

 : 클라이언트가 Request를 보내면 해당 서버의 엔진이 클라이언트에게 유일한 ID를 부여하는데, 이 ID를 세션이라 한다.

 : 세션 ID는 임시로 저장하여 페이지 이동시 이용하거나, 클라이언트를 유일하게 구분하는 수단이 된다.

 

Session 원리

 : 세션ID를 서버에서 클라이언트가 웹 사이트에 접속시 발급해준다.

 : 서버에서 클라이언트로 발급해준 세션ID를 쿠키를 사용해서 저장한다

 : 클라이언트는 다시 접속시 이 쿠키를 이용해서 세션ID값을 서버에 전달한다.

 

세션의 장점

 : 각 클라이언트에게 고유ID를 부여한다.

 : 세션ID로 클라이언트를 구분해서 클라이언트의 요구에 맞는 서비르를 제공할 수 있다.

 : 사용했던 정보들을 서버에 저장하기 때문에 보안 상 쿠키보다 우수하다

 

세션의 단점

 : 서버에 저장되는 세션때문에 서버에 처리를 요구하는 부하와 저장공간을 필요로 한다.

 

 

쿠키와 세션의 차이점

 : 큰 차이점은 저장되는 위치이다

 : 쿠키는 클라이언트에 저장되어서 보내는 역할을 하고

 : 세션은 서버에 저장됭서 클라이언트에게 알려줘서 사용한다

 

requests

 : 쿠키, 세션을 통해 사용을 해야할 경우 필요

pip install requests

 

requests 모듈

import requests
#http에서 사용하는 데이터 전송방식 GET, POST 방식이 있는데 두 방식의 메소드를 제공
r = requests.get("http://google.com") #get 방식의 요청을 하는 경우

#POST 요청
formData = {"key1": "value1", "key2": "value2"}
r = requests.post("http://sample.com", data = formData)

 

 

텍스트 데이터 가져오기

import requests

rssData = requests.get("http://api.aoikujira.com/time/get.php")

# 텍스트 형식으로 출력하기
txt = rssData.text
print("txt : ", txt)

# 바이너리 형식으로 출력하기
bin = rssData.content
print("bin : ", bin)

 

이미지 데이터 가져오기

import requests

res = requests.get("https://t1.daumcdn.net/daumtop_chanel/op/20200723055344399.png")

# 바이너리 형식으로 이미지 저장하기
with open("logo.png", "wb") as f:
    f.write(res.content)
    
print("이미지 파일이 저장되었습니다.")

 

반응형

'Python > python' 카테고리의 다른 글

WEB 데이터 형식  (0) 2020.11.13
Selenium  (0) 2020.11.09
Python을 이용한 데이터 시각화  (0) 2020.11.03
예외 처리 사용하기  (0) 2020.10.20
클래스 상속 사용하기  (0) 2020.10.19