1) ์ธํฐ๋ท๊ณผ ์น
0. ์ฉ์ด์ ๋ฆฌ
๋คํธ์ํฌ(Network)
๋ ๊ฐ์ ์ปดํจํฐ๊ฐ ์ฐ๊ฒฐํ ๊ฒ
LAN(Local Area Network)
๊ทผ๊ฑฐ๋ฆฌ ์ง์ญ ๋คํธ์ํฌ(์ผ์ ๊ฑฐ๋ฆฌ์ ์ปดํจํฐ๋ค์ ์ฐ๊ฒฐํ ๊ฒ)
์ธํฐ๋ท(Internet)
๋ฒ ์ง๊ตฌ์ ์ผ๋ก ๋คํธ์ํฌ๋ฅผ ์ฐ๊ฒฐํ ๊ฒ
์น(Web)
: ์ธํฐ๋ท์์ ์ ๋ณด๋ฅผ ๊ตํํ ์ ์๋ ํ๊ฒฝ, ์์คํ
๊ทธ๋ ๋ค๋ฉด, ์น ์์์ ์ ๋ณด๋ฅผ ์ด๋ป๊ฒ ์ฃผ๊ณ ๋ฐ์๊น?
1) ์น์์ ์ ๋ณด ์ฃผ๊ณ ๋ฐ๊ธฐ
0. ์ฉ์ด ์ ๋ฆฌ
ํด๋ผ์ด์ธํธ : ์ ๋ณด๋ฅผ ์์ฒญํ๋ ์ปดํจํฐ
์๋ฒ : ์ ๋ณด๋ฅผ ์ ๊ณตํ๋ ์ปดํจํฐ
1. ์ ๋ณด๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ๋ฐฉ๋ฒ
- ํด๋ผ์ด์ธํธ๋ ์๋ฒ์๊ฒ HTTP ์์ฒญ(request)์ ๋ณด๋ธ๋ค.
- ์๋ฒ๋ ํด๋น ์์ฒญ์ ๋ํด ์ฒ๋ฆฌํ๋ค.
- ์ฒ๋ฆฌ๊ฐ ์๋ฃ๋ ๊ฒฐ๊ณผ์ ๋ํด ์๋ฒ๋ ํด๋ผ์ด์ธํธ์๊ฒ HTTP ์๋ต(response)์ ๋ณด๋ธ๋ค.
2. ์ ๋ณด๋ฅผ ์ฃผ๊ณ ๋ฐ๊ธฐ ์ํ ๊ท์น(HTTP)
HTTP(Hypter Text Transfer Protocol)
์น ์์์ ์ ๋ณด๋ฅผ ์ฃผ๊ณ ๋ฐ๊ธฐ ์ํ ์ฝ์, ๊ท์น
์ ๋ณด๋ฅผ ์์ฒญํ ๋ ๋ณด๋ด๋ HTTP ๊ตฌ์กฐ์ ์๋ต์ ๋ณด๋ผ ๋ ์ฌ์ฉํ๋ HTTP ๊ตฌ์กฐ๋ก ๋๋์ด์ ์ดํด๋ณด์.
Request Message HTTP ๊ตฌ์กฐ (ํด๋ผ์ด์ธํธ → ์๋ฒ)
ํด๋น ๋ฉ์์ง ๊ตฌ์กฐ๋ ํฌ๊ฒ ์์๋ผ์ธ start line), ํค๋๋ค(Headers), ํ ์ค ๋์ด์ฐ๊ธฐ, ๋ฐ๋(Body)๋ก ๊ตฌ์ฑ๋๋ค.
์์๋ผ์ธ(Start Line)
[HTTP Method] [Request target] [HTTP version]
์์๋ผ์ธ์ HTTP Method, Request target, HTTP ๋ฒ์ ์ ๋ํ ์ ๋ณด๋ฅผ ํฌํจํ๋ค.
- HTTP ๋ฉ์๋ : ์๋ฒ๊ฐ ์ํํด์ผ ํ๋ ํ๋์ ์ง์ ํ๋ค.
- GET : ์กด์ฌํ๋ ์์์ ๋ํ ์์ฒญ
- POST : ์๋ก์ด ์์์ ์์ฑ
- PUT : ์กด์ฌํ๋ ์์์ ๋ํ ๋์ฒด(๋ฎ์ด์ฐ๊ธฐ), ์์ผ๋ฉด ์๋ก ์์ฑ
- PATCH : ์กด์ฌํ๋ ์์์ ๋ํ ๋ณ๊ฒฝ(์ผ๋ถ ๋ณ๊ฒฝ)
- DELETE : ์กด์ฌํ๋ ์์์ ๋ํ ์ญ์
- HEAD : Body์ ์ ์ธํ ์ํ์ค๊ณผ ํค๋ ๋ถ๋ถ๋ง ๋ฐํ)
- OPTIONS
- TRACE
- CONNECT
- ์์ฒญ ํ๊น(Request target) : HTTP Request๊ฐ ์ ์ก๋๋ ๋ชฉํ ์ฃผ์
- HTTP ๋ฒ์ (HTTP version)
ํค๋๋ค(Headers)
: ์์ฒญ์ ๋ํ ์ถ๊ฐ ์ ๋ณด๋ฅผ ๋ด๊ณ ์๋ ๋ถ๋ถ์ด๋ค.
(์ํฐ)
๋ฐ๋(Body)
: ์์ฒญ์ ๋ํ ๋ฐ์ดํฐ๋ฅผ ๋ด๊ณ ์๋ ๋ถ๋ถ์ด๋ค. ์ ์กํ ๋ฐ์ดํฐ๊ฐ ์๋ค๋ฉด ํด๋น ๋ถ๋ถ์ ๋น ์ํ๋ก ์ ์กํ๋ฉด ๋๋ค.
Response Message HTTP ๊ตฌ์กฐ
ํด๋น ๋ฉ์์ง ๊ตฌ์กฐ๋ ํฌ๊ฒ ์ํ๋ผ์ธ(status line), ํค๋๋ค(Headers), ํ์ค ๋์ด์ฐ๊ธฐ, ๋ฐ๋(Body)๋ก ๊ตฌ์ฑ๋๋ค.
์ํ๋ผ์ธ(Status Line)
[HTTP version] [Status Code] [Status Text]
์ํ ๋ผ์ธ์ HTTP ๋ฒ์ , ์ํ์ฝ๋, ์ํ์ ๋ํ ์ ๋ณด๋ฅผ ํฌํจํ๋ค.
- HTTP ๋ฒ์ (HTTP version)
- ์ํ์ฝ๋(Status Code)
- 1XX : ์ ๋ณด ์๋ต
- 2XX : ์ฑ๊ณต ์๋ต
- 3XX : ๋ฆฌ๋ค์ด๋ ์ ๋ฉ์ธ์ง
- 4XX : ํด๋ผ์ด์ธํธ ์๋ฌ ์๋ต
- 5XX : ์๋ฒ ์๋ฌ ์๋ต
- ์ํ์ฝ๋ ์ค๋ช (Status Text)
ํค๋๋ค(Headers)
: ์๋ต์ ๋ํ ์ถ๊ฐ ์ ๋ณด๋ฅผ ๋ด๊ณ ์๋ ๋ถ๋ถ์ด๋ค.
(์ํฐ)
๋ฐ๋(Body)
: ์๋ต์ ๋ํ ๋ฐ์ดํฐ๋ฅผ ๋ด๊ณ ์๋ ๋ถ๋ถ์ด๋ค. ์ ์กํ ๋ฐ์ดํฐ๊ฐ ์๋ค๋ฉด ํด๋น ๋ถ๋ถ์ ๋น ์ํ๋ก ์ ์กํ๋ฉด ๋๋ค.
2) ์น ๋ธ๋ผ์ฐ์ ์ ๋๋๋ง
0. ์ฉ์ด ์ ๋ฆฌ
์น ํ์ด์ง : ์น ์ฌ์ดํธ์ ์๋ ํ๋์ ํ์ด์ง
์น ์ฌ์ดํธ : ์น ํ์ด์ง์ ๋ชจ์
์น ๋ธ๋ผ์ฐ์ : HTTP์๋ต ์์ฒญ์ ๋ณด๋ด๊ณ , ์๋ต๋ฐ์ HTML ์ฝ๋๋ฅผ ๋๋๋ง ํ๋ ์ญํ
HTML(ํ์ผ) → ์น ๋ธ๋ผ์ฐ์ → ์น ํ์ด์ง
์น ๋ธ๋ผ์ฐ์ ์ ๋ ๋๋ง ์์ง์, ์น ๋ฌธ์๋ฅผ ๋ก๋ฉํ ํ ํ์ฑ์ ์งํํ๋ค.
1. ์น ๋ธ๋ผ์ฐ์ ์ ๋๋๋ง
๋๋๋ง์ด๋,
์น์ฌ์ดํธ ์ฝ๋๋ฅผ ์ฌ์ฉ์๊ฐ ์น ์ฌ์ดํธ๋ฅผ ๋ฐฉ๋ฌธํ ๋ ๋ณด๊ฒ ๋๋ ํ์ด์ง๋ก ๋ฐ๊พธ๋ ์ ์ฐจ์ด๋ค.
- ํ์ฑ : ์๋ฒ๋ก๋ถํฐ HTML, CSS, JavaScript ํ์ผ์ ํ์ฑ(Parsing)ํ๋ค. ํ์ฑ ๊ณผ์ ์ ํตํด DOM(Document Object Model) ํธ๋ฆฌ, CSSOM(CSS object Model) ํธ๋ฆฌ๊ฐ ์์ฑ๋๋ค.
- ๋๋ ํธ๋ฆฌ ์์ฑ : DOM, CSSOM ํธ๋ฆฌ๋ฅผ ๋ฐํ์ผ๋ก ์ค์ ํํ๋๋ ์์๋ค๋ง ์ด์ฉํด ๋๋ํธ๋ฆฌ๋ฅผ ์์ฑํ๋ค.
- ๋ ์ด์์ ์ค์ : ๊ฐ ๋ ธ๋๋ค์ ํฌ๊ธฐ์ ์์น ๊ด๋ จํ ์ ๋ณด๋ค๋ก ์ด๋ ์์น, ์ด๋ ํฌ๊ธฐ๋ก ์ถ๋ ฅํ ์ง ๊ณ์ฐํ๋ค.
- ์ถ๋ ฅ : ๊ณ์ฐ๋ ๋ ์ด์์์ ๋ฐ๋ผ ์์๋ค์ ์ถ๋ ฅํ๋ค.
cf) ํ์ฑ์ด๋? ์ผ๋ จ์ ๋ฌธ์์ด์ ์๋ฏธ ์๋ ํ ํฐ(token)์ผ๋ก ๋ถํดํ๊ณ , ์ด๋ค๋ก ์ด๋ฃจ์ด์ง ํ์คํธ๋ฆฌ(parse tree)๋ฅผ ๋ง๋๋ ๊ณผ์ ์ด๋ค.
cf) DOM, CSSOM์ผ๋ก ํ์ฑ ํ๋ ์ด์ ๋ ๊ฐ ๋ ธ๋๋ฅผ ๊ฐ์ฒด๋ก ๋ง๋ค๋ฉด, ๋์ฑ ์ฝ๊ณ ํธ๋ฆฌํ๊ฒ ๊ด๋ฆฌํ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค.
- ์ํ๋ ์์๋ฅผ ๋์ ์ผ๋ก ๋ณ๊ฒฝํ ์ ์๋ค. (ํน์ ๋ ธ๋ ์ถ๊ฐ ์ญ์ ๊ฐ๋ฅ)
document.body.appendChild(๋
ธ๋์ด๋ฆ)
- ์ํ๋ ์์๋ฅผ ์ฝ๊ฒ ์ฐพ์ ์ ์๋ค.
document.getElementbyTagName(ํ๊ทธ์ด๋ฆ)
3) ์ค์ต
1. request ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ด์ฉํ ์์ฒญ ์ ์ก
request ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ด์ฉํด ์์ฒญ์ ๋ณด๋ด๋ณด์.
ํด๋น url์ data์ ํจ๊ป GET, POST ์์ฒญ์ ๋ณด๋ด๋ ์ฝ๋์ด๋ค.
import requests
## GET ์์ฒญ
res=requests.get(url, data)
## POST ์์ฒญ
res=requests.post(url, data)
P : request ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ด์ฉํด body๋ถ๋ถ์ ๊ฐ์ ธ์ค๋ฉด, ์ฐ๋ฆฌ๊ฐ ํ์ํ์ง ์์ ์ ๋ณด๋ค๋ ๋๋ฌด ๋ง์ด ๋ณด์ธ๋ค.
S : ํ์ฑ(2)-1๋ฒ ์ฐธ๊ณ )๋ฅผ ์ด์ฉํด ์ํ๋ ์ ๋ณด๋ง ์ถ์ถํด ๋ณด์.
2. ๊ฐ ์ฌ์ดํธ์ robots.txt ๊ด๋ จ ์ ๋ณด ๊ฐ์ ธ์ค๊ธฐ
์น ์คํฌ๋ํ : ์น ํ์ด์ง๋ก๋ถํฐ ์ฐ๋ฆฌ๊ฐ ์ํ๋ ์ ๋ณด๋ฅผ ์ถ์ถํ๋ ๊ฒ
์น ํฌ๋กค๋ง : ํฌ๋กค๋ฌ(๋ก๋ด)๋ฅผ ์ด์ฉํด์ ์ฌ๋ฌ ์น ํ์ด์ง์ ์ ๋ณด๋ฅผ ์ธ๋ฑ์ฑ(url๋ณ ์ด๋ค ์ ๋ณด๊ฐ ์์๋ค๋ ์ ๋ณด)ํ๋ ๊ฒ
REP(Robot Exclusion Protocol) : ๋ก๋ด์ ๋ฌด๋จ ์ ๊ทผ์ ๋ฐฉ์งํ๊ธฐ ์ํด ์ ํ์ ๋๊ฒ ํ๋ ์ฝ์, ํ์ค ๊ถ๊ณ ์(๊ฐ์ ๋ ์๋)
์น ํฌ๋กค๋ฌ๋ค์ ํด๋น ๊ท์น์ ์งํค๋ฉด์ ํฌ๋กค๋ง์ ์งํํด์ผ ํ๋ค.
- ์๋ฒ์ ๋ถํ๋ฅผ ์ฃผ์ง ์๊ณ
- ๋ฐ์ดํฐ์ ์ ์๊ถ์ ์ง์ผ์ผ ํ๋ค.
๊ฐ ์น ํ์ด์ง์ ํ์ฉ ์ ๋ณด๋ robots.txt ํ์ผ์ ์๋ค.
๋ณดํต user-agent, Disallow, Allow ๋ถ๋ถ์ ์ดํด๋ณด๋ฉด ๋๋ค.
์์)
user-agent : *
Disallow : /
๋ชจ๋ ์ ์ ์ ๋ํ ์์ฒญ์ ๊ฑฐ๋ถ
user-agent : *
Allow :
๋ชจ๋ ์ ์ ์ ์์ฒญ์ ํ์ฉ(ํฌ๋กค๋ฌ ํ์ฉ)
์นํ์ด์ง์ ํ์ฉ ์ ๋ณด๋ฅผ ๋ฐ์์ค๋ ์ฝ๋์ด๋ค.
import requests
res=requests.get(”url/robots.txt)
print(res.text)