본문 바로가기

취미코딩/hobby

파이썬으로 업무 자동화까지 <5> HTTP

코딩 초보의 정리글입니다. 0편부터 보세요.

간단하든 복잡하든 서버에서 홈페이지를 한번이라도 만들어본다면, 웹사이트라는 게 생각보다 복잡하다는 걸 알게 된다. 그렇다고 백엔드 프로그래밍을 다 이해하고 뭔가를 시작해야 하는 건 아니다. 최소한 알아두면 좋을 것만 정리한다.

우리가 입력하는 URL은 앞에 HTTP 혹은 HTTPS가 붙는다. S는 보안 쪽이니 빼고, HTTP는 Hyper Text Transfer Protocol의 약자다. '초 텍스트'(Hyper-Text), 즉 텍스트 형태로 이런 저런 내용을 담은 것을 전송(Transfer)하는 규약(Protocol)이라는 거다.

'초 텍스트'는 보통 HTML을 의미한다. Hyper Text Markup Language다. 이런 저런 내용을 일정한 규칙에 담아 구조화한 문서를 만드는 언어, 혹은 문서 자체를 뜻한다.

다시 정리하면 우리가 브라우저로 어떤 홈페이지에 접속하는 건 보통 HTTP라는 규약을 통해 HTML 문서를 받아서 본다는 의미다.

즉, 규약을 준수하면, 그것이 꼭 브라우저에서만 가능하리란 법은 없다는 얘기가 된다.

브라우저로 어딘가에 접속해 형태는 동일하지만 내용은 바뀌는 어떤 콘텐츠를 확인해서 2차 작업을 반복해야 한다면, 그걸 자동화하고 싶을 것이다. 크롬에 매크로 확장이 있어서, 일정 간격으로 페이지를 새로고침 한다던가 하는 기능이 있는 것처럼.

쓸데없는 말을 길게 늘어놓은 이유는, '크롤링'이나 '웹 스크래핑'과 같은 멋진 단어에 혹해 의미없는 스크립트를 짜는 건 좋을 게 없기 때문이다. 의미 없이 돌아가는 코드는 어딘가 구축된 서버에 불필요한 부담을 주고, 그 서버를 구축한 이들은 그게 달갑지 않다. 그리고 무단으로 서버에 과도한 호출을 보내는 건 정당한 일이 아니다.

그렇지 않고 필요에 의해 브라우저가 아닌, 키보드와 마우스가 아닌 웹 호출이 필요한 이들에게 파이썬은 멋진 툴을 제공한다.

코드를 알아보기 전 URL에 대해 잠깐 메모.

URL의 본 의미보다는 URL의 구조가 중요하다.

https://movie.naver.com/movie/bi/mi/basic.nhn?code=164143

네이버에서 아무 곳이나 클릭해 주소를 복사해봤다. 이걸 뜯어보자.

https://

프로토콜이다. //은 사실 필요없는 문자였다는 얘길 얼마 전 들었다.

movie.

서브도메인이다. 네이버 내에 영화 페이지가 별도로 있는데, 이 부분을 서브도메인을 붙인 것이다.

naver.com

도메인이다. 서버 IP를 쉽게 기억하도록 문자로 대체하는 역할을 한다.

/movie/bi/mi/basic.nhn

해당 도메인으로 접속산 서버에서 호출하는 HTML 문서의 경로다. 다만 이것이 꼭 컴퓨터와 같이 실제 경로를 나타내리란 법은 없다.

?code=164143

URL에서 ?는 매개변수의 시작을 가르킨다. 뒤에는 A=B 형태로 붙는다. 해당 페이지를 호출할때 필요한 여러가지의 정보를 담는다. 여러개가 붙을 수도 있다. 최신 프레임워크로 만든 홈페이지는 이런 방식으로 매개변수를 담지 않고 /로 구분하는 게 많다.

종합하면, HTTP 프로토콜로 naver.com 도메인의 movie라는 서브도메인에서 /movie/bi/mi/basic.nhn에 해당하는 페이지를 호출하는데 ?code=164143라는 매개변수를 담아서 호출했다는 얘기다.

파이썬으로 HTTP 호출을 하려면 이런 상식 정도는 알고 시작하는 게 좋다.