TIL - HTTP
๐ย ๊ณต๋ถ ๋ด์ฉ
์น
์น ํ์ด์ง์ HTML
์น ํ์ด์ง
- ์น ์์ ๋ฌธ์ ํ๋
- ex) ๋ค์ด๋ฒ ๋ฉ์ธ ํ์ด์ง
- HTML์ผ๋ก ๊ตฌ์ฑ๋์ด์์
์น ์ฌ์ดํธ
- ์ฌ๋ฌ ์น ํ์ด์ง์ ๋ชจ์
- ex) ๋ค์ด๋ฒ๋ผ๋ ์น ์ฌ์ดํธ
์น ๋ธ๋ผ์ฐ์
- HTTP์์ฒญ์ ๋ณด๋ธ ํ, HTTP์๋ต์ ๋ด๊ธด HTML๋ฌธ์๋ฅผ ์ฌ์ฉ์๊ฐ ๋ณด๊ธฐ ์ฝ๊ฒ ํ๋ฉด์ผ๋ก ๊ทธ๋ ค์ฃผ๋ (๋ ๋๋ง) ์ญํ
HTML(๊ฐ๋ ์ ๋ฆฌ ๊ธ ๋งํฌ)
- ์ด์ ๊ฐ์์์ ๋ค๋ฃฌ ๋ด์ฉ ์ฐธ๊ณ
- ์น ๋ธ๋ผ์ฐ์ ๋ง๋ค ์ง์ํ๋ ํ๊ทธ์ ์์ฑ์ด ๋ฌ๋ผ์ง
์น ์คํฌ๋ํ / ์น ํฌ๋กค๋ง
์น ์คํฌ๋ํ
- ํน์ ๋ชฉ์ ์ ๋ฐ๋ผ ์น ํ์ด์ง์์ ์ํ๋ ๋ฐ์ดํฐ๋ฅผ “์ถ์ถ”
- ex) ๋ ์จ ์ ๋ณด ๊ฐ์ ธ์ค๊ธฐ, ์ฃผ์ ๋ฐ์ดํฐ ๊ฐ์ ธ์ค๊ธฐ, …
์น ํฌ๋กค๋ง
- ํฌ๋กค๋ฌ๋ฅผ ์ด์ฉํด URL์ ํ๊ณ ์ด๋ํ๋ฉฐ ๋ฐ๋ณต์ ์ผ๋ก ์น ํ์ด์ง์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ “์ธ๋ฑ์ฑ”(๋ฐ์ดํฐ ์์ธ)
- ๊ตฌ๊ธ, ๋ค์ด๋ฒ ๋ฑ ๊ฒ์ ์์ง์ ์น ํฌ๋กค๋ฌ
์ฌ๋ฐ๋ฅธ HTTP Request
์ฌ๋ฐ๋ฅธ HTTP Request๋ฅผ ์ํด์ ..
- ์ด๋ค ๋ชฉ์ ์ ๋ฌ์ฑํ๋ ค ํ๋๊ฐ?
- ์๋ฒ์ ์ํฅ์ ๋ฏธ์น๋๊ฐ?
๋ก๋ด ๋ฐฐ์ ํ๋กํ ์ฝ(REP)
- ์น ํฌ๋กค๋ง, ์คํฌ๋ํ์ ๋ก๋ด์ ์ํด ์คํ ๊ฐ๋ฅ
- ์ฌ์ดํธ์ ๋ชจ๋ ์ ๋ณด๋ฅผ ์ทจ๋ํ๋๊ฒ์ด ์ ๋นํ๊ฐ? ์๋ฌธ์์ ์์
- robots.txt
- ๊ฐ ์ฌ์ดํธ๋ง๋ค ํ์ฉํ๋ ํฌ๋กค๋ฌ ์ ๋ณด์ ํ์ฉ๋ฒ์์ ๋ํ ์ ๋ณด๋ฅผ ๋ด๊ณ ์์
- User-agent, Disallow, Allow
HTTP
HTTP?
HyterText Transfer Protocol
์น ์์์ ์ ๋ณด๋ฅผ ์ฃผ๊ณ ๋ฐ๊ธฐ ์ํ ์ฝ์
HTTP Request | HTTP Response | |
---|---|---|
๋ฐฉํฅ | Client -> Server | Client <- Server |
์ญํ | ์ ๋ณด ์์ฒญ | ์์ฒญ์ ๋ํ ๋ด์ฉ์ ๋ด์ ์๋ต |
HEAD | method, path, … | content-type, date, … |
BODY | document |
ํต์ ํ๊ธฐ
requests
- Python์ผ๋ก HTTP ํต์ ์ ์งํํ ์ ์๊ฒ ํด์ฃผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
GET
- naver ๋ฉ์ธ ํ์ด์ง๋ฅผ ์์ฒญํ๋ ์ฝ๋
|
|
POST
- https://webhook.site ๋ฅผ ํตํด POST ํต์ ์ ์งํํ ์ ์์
|
|
DOM
DOM?
Document Object Model
HTML์ ํ์ฑํ์ฌ, ๋ธ๋ผ์ฐ์ ๊ฐ ์ดํดํ๋๋ก ๋ง๋ Treeํํ์ ์๋ฃ๊ตฌ์กฐ
DOM์ ๊ฐ ๋ ธ๋๋ฅผ ๊ฐ์ฒด๋ก ์๊ฐํ์ฌ, ๋ฌธ์๋ฅผ ํธ๋ฆฌํ๊ฒ ๊ด๋ฆฌํ ์ ์์
์ํ๋ ์์๋ฅผ ๋์ ์ผ๋ก ๋ณ๊ฒฝํ ์ ์์
์ํ๋ ์์๋ฅผ ์ฝ๊ฒ ์ฐพ์ ์ ์์
python์ผ๋ก HTML์ ์ง์ ๋ถ์ํ๋ ค๋ฉด DOM์ ์์ฑํด์ฃผ๋ ๋ธ๋ผ์ฐ์ ๋ฅผ ๊ฑฐ์น์ง ์๊ธฐ ๋๋ฌธ์, ์ง์ HTML์ ๋ถ์ํ๋
HTML Parser
๊ฐ ํ์
๐ย CHECK
(์ด๋ ต๊ฑฐ๋ ์๋กญ๊ฒ ์๊ฒ ๋ ๊ฒ ๋ฑ ๋ค์ ํ์ธํ ๊ฒ๋ค)
Jupyter lab
- Jupyter notebook์ด๋ Colab์ ์จ ๋ดค๋๋ฐ Jupyter lab์ ์ฒ์ ์ ํด๋ด
- Jupyter notebook๊ณผ ๋น์ทํ์ง๋ง ๋ ๊ฐ์ ๋ ๋ฒ์ (?)
DOM์ ๋ํ ์ค๋ช ๋ฐ ํ์ฉ : ๋ณต์ต ํ ๋ค๋ฅธ ์์๋ค์ ๋ ์ฐพ์๋ณผ ๊ฒ
โย ๋๋ ์
HTML ์คํฌ๋ํ์ ํด๋ณธ์ ์ด ์์ด์ ์ด๋ก ์ด๋ ์ค์ต ๋ชจ๋ ๋น ๋ฅด๊ฒ ์งํํ๋ค. 5์๊ฐ ๋ถ๋์ ๊ฐ์์ธ๋ฐ 3์๊ฐ ๋ด๋ก ๋๋ ๊ฒ ๊ฐ๋ค. TIL์ ์ ์ ๊ณ ์ถ์ด์ ๊ณ ๋ฏผ์ ์ข ํ๊ณ ๊ทธ ์ธ์ ์๊ฐ์ ํ์๋ณด๋ค๋ ๋๋ํ๊ฒ ํ๋ ค๋ณด๋๋ค.
TIL์ ์ ์ ๋ ๊ธฐ์กด์๋ ๊ฐ์ ๋ฐ์์ฐ๊ธฐ์ฒ๋ผ ์ ๋ ๊ฒฝํฅ์ด ์์๋๋ฐ, ๋์ค์ ๋ค์ ์ฝ์ด๋ณด๋ ์ดํดํ๊ณ ์ด ๊ฒ ๊ฐ์ ๋๋์ด ์ ํ ๋ค์ง ์์๋ค. ์ด์ HTML์ด๋ก ์ ๋ํ TIL์ ์ค์ต ๋ถ๋ถ ์ธ์๋ ์ง์ ์ฌ์ฉํด๋ณด๊ณ ํ๋ฉด์ ์ ์๊ฑฐ๋ผ, ‘๋ด๊ฐ ์ง์ ์จ๋ณด๊ณ ์ดํดํ ๋ด์ฉ’์์ ์ ์ ์์๋ค. ๊ทธ๋ฐ๋ฐ ์ด๋ฐ์ ์ ์ TIL์ ๋ค์ ๋ณด๋๊น ๊ทธ๋ฅ ๋ฐ์์ ์๊ฒ ํฐ๊ฐ ๋๊ธฐ๋ ํ๊ณ ์ ๊ธฐ์ต์ด ๋์ง ์์๋ค.
์ค๋์ ๊ฐ์๋ฅผ ์ฒ์๋ถํฐ ๋๊น์ง ๋ค์ ํ ํค์๋๋ง ์ฒดํฌํด ํ๊ธฐํ ๋ค์, TIL์ ์ ์ผ๋ฉด์ ์ค๊ฐ์ค๊ฐ ๋ค์ ๋ฃ๋ ๋ฐฉ์์ ์ฌ์ฉํ๋ค. ์ด ๋ฐฉ์์ผ๋ก ๋ ์ ์ฝํ๊ณ ์ง์์ ์๋ ๊ตฌ์ฑ์ ๊ธ์ ์ฐ๊ฒ ๋์ด์ ๋ง์กฑ์ค๋ฌ์ ๋ค. TIL ์ฐ๋ ์๊ฐ์ ์ค๋ ๊ฑธ๋ฆฌ์ง๋ง ์ต์ํด์ง๋ฉด ์ค์ด๋ค ๊ฒ ๊ฐ์์ ๊ฑฑ์ ์ ๋์ง ์๋๋ค.
์ปค๋ฆฌํ๋ผ์ ๋ณด๋ ๋ด์ผ๋ถํฐ๋ BeautifulSoup๋ฅผ ์ฌ์ฉํด ์คํฌ๋ํ์ ์์ํ๋๋ฐ, ๋ชจ๋ฅด๋ ๋ถ๋ถ์ด ๋ง์ ๊ฒ ๊ฐ์ ๋ฒ์จ๋ถํฐ ๊ธฐ๋๊ฐ ๋๋ค. :>