[π§οΈJungle] Web Scraper, Flask, Own project - TIL
Flask
- Flaskλ,
νμ΄μ¬ μΉνλ μμν¬λ‘ κ°νΈνκ² serverλ₯Ό νΈμ€ν ν μ μκ² ν΄μ€λ€.
- Flask μλ² μ€ν
μλ² μ€ν μ νλ μμν¬ κ° μΆ©λμ νΌνκΈ° μν΄μ 'κ°μ νκ²½'μμ μμ μ μ§ννλ€.
'κ°μ νκ²½(Virtual Environment)'μ΄λ, μμ ν΄λ λ΄μμ νμ ν΄λλ₯Ό λ§λ€μ΄ μ΄ μμμ νλ μμν¬λ₯Ό κ΄λ¦¬ν μ μκ² νλ€. μ΄λ₯Όν΅ν΄ μ 체 νκ²½ νμμ μλνλ νλ μμν¬μμ μΆ©λ λ° κ°μμ λ§κ³ λ²μ κ΄λ¦¬λ₯Ό λλλ€.
(* κ°μνκ²½μ λλλ μ΄μ β λ°°ν¬ μ λΆνμν νλ μμν¬ μ€μΉ λ°©μ§ λ° λμΌ λ²μ μΌλ‘ μ€μΉνκΈ° μν΄ β‘ μλ²μ python λ²μ μ 무κ΄νκ² μ¬μ© κ°λ₯νκΈ°μ python λ²μ μ λ°λΌμ μ§μνμ§ μλ νλ μμν¬(ex. Django)κ° μλ κ²½μ° μ μ©)
- Flask κΈ°λ³Έ ν΄λ ꡬ쑰
'v env', 'static', 'template' ν΄λμ 'app.py' νμΌμ΄ κΈ°λ³Έμ΄ λλ€.
staticμλ img, css νμΌ λ±μ μ μ₯ν΄λκ³ , templateμ index.htmlκ³Ό κ°μ νμΌμ΄ static ν΄λμμ sourceλ₯Ό λΆλ¬μμ μ¬μ©λλ€. app.py νμΌμλ Flask μλ² μ€ν κΈ°λ³Έ λ¬Έλ² λ° μλ² μμ² APIμ λν΄ μ 리λμ΄ μλ€.
- API λ§λ€κΈ°
HTTP request method(μμ² λ©μλ)λ₯Ό ν΅ν΄ μ΄λ€ μμ² μ’ λ₯(GET, POST λ±)μΈμ§ μλ΅νλ μλ² μͺ½μ μ 보λ₯Ό μλ €μ€λ€.
1. GET
λ°μ΄ν°λ₯Ό μ‘°ν(Read)ν λ μ¬μ©!
→ λ°μ΄ν° μ λ¬: URL λ€μ λ¬Όμνλ₯Ό λΆμ¬ key=valueλ‘ μ λ¬(google.com?q=μμ΄ν°)
2. POST
λ°μ΄ν°λ₯Ό μμ±(Create), μμ (Update), μμ (Delete)ν λ μ¬μ© !
→ λ°μ΄ν° μ λ¬: HTML Body μμμ key:value ννλ‘ μ λ¬
βοΈOwn Project
URL, Memoλ₯Ό μ μ₯ν μ μμΌλ©°, card columns νμμΌλ‘ μ μ₯νλ λ΄μ©μ κΈ°λ³Έμ μΌλ‘ νμνλ μ¬μ΄νΈ.
κΈ°λ₯ λ¨μ
- DBμ μ μ₯λ Memoλ₯Ό card Columns display
- DBλ‘ μ κ· μμ± Memo Upload
ꡬ쑰
Body
- Card νμμΌλ‘ DBμ μλ μ§μ λ¨κΈ΄ Memoμ URLμ Meta λ°μ΄ν° μ€ μ¬μ§, Headline λ±μ κ°μ Έμμ νμ(Bootstrap, MongoDB)
- λ©λͺ¨ μμ±μ΄κΈ° λ²νΌ > URL, Memo μ λ ₯λ .show() > μ λ ₯ νκΈ° λ²νΌ > μ λ ₯ μλ£ Pop-up > λ©λͺ¨ μμ± λ«κΈ° λ²νΌ > URL, Memo μ λ ₯λ.hide() (CSS, jQuery)
π‘ A-Ha
- ν <Div> Tagμ classλ₯Ό λ κ° μ΄μ μ§μ νκ³ μΆμ κ²½μ° βΆ class = "ν΄λμ€λͺ 1 ν΄λμ€λͺ 2"
- ν·κ°λ¦¬λ HTML, CSS, JS, jQuery, Ajax, Flask
- HTML: Head, Body ꡬ쑰, Head λ΄ <script>...</script> μμ ν¨μλ₯Ό μ μν μ μμ
- JS: HTMLμμ μλνλ μΈμ΄λ‘ script Tagμμ ν¨μλ₯Ό μ μνλ€κ±°λ μ°μ°μ νλ€κ±°λ ν λ μ¬μ©λ¨
- CSS: ν¨μλ₯Ό ν΅ν΄μ Styleμ λ³κ²½μν¬ λ CSSμ λ³νκ° μμ
- jQuery: CSSλ₯Ό λ³νμν€κ±°λ μνλ₯Ό κ°μ Έμ€κ±°λ ν λ μ¬μ©λλ©°, JS ν¨μ μμμλ νμ©λ μ μμ
- Ajax: μλ²μ Dataλ₯Ό μ μ‘νκ±°λ μλ²μμ responseλ₯Ό λ°κ±°λ ν λ μ¬μ©λ¨
- Flask: μλ²λ₯Ό λλ €μ£Όλ μν μ νλ©°, static ν΄λμ μλ μ 보λ₯Ό HTMLμ λΏλ €μ€ μλ μμ