๋์ ์ฒซ๋ฒ์งธ ํ ์ด ํ๋ก์ ํธ๊ฐ ๋๋ฌ๋ค.
๊ทธ์ ๋ฐ๋ผ ํ๋ก์ ํธ ์ฃผ์ ์ ์ ๊ณผ ํ๋ก์ ํธ๋ฅผ ์งํํ๋ฉด์ ๊ณ ๋ฏผํ๋ ๋ถ๋ถ์ ํ๊ณ ํด๋ณด๊ณ ์ ํ๋ค.
๐โ๏ธ ๋ชฉ์ฐจ๋ ์๋์ ๊ฐ๋ค.
- ์ฃผ์ ์ ํ๊ธฐ
- ์น ์ ๋ณด ํฌ๋กค๋ง
- ์น ์๋ฒ ๋ง๋ค๊ธฐ
- AWS EC2๋ฅผ ํ์ฉํ์ฌ ์๋น์ค ๊ตฌ์ถ
- ๋ง๋ฌด๋ฆฌ
1. ์ฃผ์ ์ ํ๊ธฐ
ํ ์ด ํ๋ก์ ํธ๋ ๋ฌด์์ธ๊ฐ... ๐ค
ํ ์ด ํ๋ก์ ํธ๋ ๊ฑฐ์ฐฝํ ํ๋ก์ ํธ๊ฐ ์๋๋ผ ์ฅ๋๊ฐ(ํ ์ด)๋ฅผ ๊ฐ์ง๊ณ ๋ ๋ฏ ํฅ๋ฏธ ์์ฃผ์ ํ๋ก์ ํธ๋ฅผ ์งํํ๋ ๊ฒ์ผ๋ก ์๊ฐํ๋ฉด๋๋ค.
๋์ ๊ฒฝ์ฐ, ํ์์ ๋ถํธํ๋ ์ ๋๋ ์ด๋ฐ ์๋น์ค๊ฐ ์์ผ๋ฉด ์ฐธ ์ข์ํ ๋ฐ... ๋ผ๋ ์๊ฐ์ผ๋ก ์ ๊ทผํ๋ค.
๋ฐฉํ์ถ ์ทจ์ ์๋ฆฌ ์ฐพ๊ธฐ!
๊ทธ๋์ ์๊ฐํ ๊ฒ์ด ๋ฐฉํ์ถ ์ทจ์ ์๋ฆฌ ์ฐพ๊ธฐ์ด๋ค.
ํ๋ ๋์ฝ๋์ Tempo Rubato์ ๊ฒฝ์ฐ, 1๋
๊ฐ ์์ฝ์ด ๊ฝ ์ฐจ์๋ค.
1๋
๋ค ์ด๋ฆฌ๋ ์๋ฆฌ๋ฅผ ์์ฝํ๋ ๊ฒ๋ณด๋ค ์ทจ์ ์๋ฆฌ๋ฅผ ์ฐพ๋ ๊ฒ์ด ์ข ๋ ํฉ๋ฆฌ์ ์ผ ๊ฒ์ด๋ผ ์๊ฐํ๊ณ , ์ด๊ฒ์ ์ฌ๋์ด ์ฃผ๊ธฐ์ ์ผ๋ก ํ ์๋ ์์ผ๋ ์๋ฒ์์ ์ฃผ๊ธฐ์ ์ผ๋ก ํ์ธํ์ฌ ์๋ ค์ฃผ๋ ์๋น์ค๊ฐ ์์ผ๋ฉด ์ข๊ฒ ๋ค๊ณ ์๊ฐํ๋ค.
2. ์น ์ ๋ณด ํฌ๋กค๋ง
1. selenium์ผ๋ก ๊ตฌํ
Tempo Rubato์ ์น ํ๋ฉด์ ์๋์ ๊ฐ๋ค.
๋ฐ๋ผ์ ํน์ ๋ ์ง์ ์์ฝ ๊ฐ๋ฅํ ์๊ฐ์ด ์๋์ง ํ์ธํ๊ธฐ ์ํด์๋ ์๋์ ๊ฐ์ ๊ณผ์ ์ ๊ฑฐ์ณ์ผํ๋ค.
- ๋ฌ๋ ฅ ๊ฐ์ฒด๋ฅผ ๊ฐ์ ธ์์ ์ํ๋ ๋ ์ง๋ฅผ ์ฐพ์ ํด๋ฆญํ๋ค.
- ์๊ฐ ๊ฐ์ฒด๋ฅผ ๊ฐ์ ธ์์ ๊ฐ๋ฅํ ์๊ฐ์ด ์๋์ง ํ์ธํ๋ค.

์ ๊ณผ์ ์ ์น์ปจํธ๋กค์ด ํ์ํ๊ณ , ํด๋น ๊ณผ์ ์ selenium์ผ๋ก ๊ตฌํํ๋ค.
๊ตฌํ ๋ด์ฉ์ ์๋ ๊ฒ์๊ธ์ ์์ธํ ์ค๋ช ๋์ด์๋ค.
https://deep-flame.tistory.com/6
AWS EC2์ Python Selenium ์ ํ์ฉํ ํ ์ด ํ๋ก์ ํธ ๐ป (feat. ๋ฐฉํ์ถ ์๋ฆฌ ์ฐพ๊ธฐ!)
ํ์๋ ์ต๊ทผ์ AWS Certified Cloud Practitioner ์๊ฒฉ์ฆ์ ์ทจ๋ํ๋ค. Data Engineer๊ฐ ๋๊ธฐ ์ํด์๋ ๊ทธ๋ค์ด ์ฌ์ฉํ๋ ๊ธฐ๋ณธ์ ์ธ ์ธ์ด๋ ์์์ผํ๋ค๊ณ ์๊ฐํ๊ธฐ ๋๋ฌธ์ด๋ค. ํฉ๊ฒฉ์ ๊ธฐ์จ๋ ์ ์, ์๊ฒฉ์ฆ๋ ์ทจ๋
deep-flame.tistory.com
2. requests๋ก ๊ตฌํ
๊ทธ๋ฌ๋ค๊ฐ ์น์์ ์์ฝ ์ฌ๋ถ ๋ฐ์ดํฐ๋ฅผ ์กฐํํ๋ url์ ํ์ธํ ์ ์๋ค๋ฉด selenium์ ํ์ฉํ๋ ๊ฒ๋ณด๋ค ํจ์ฌ ๋ ๋น ๋ฅด๊ฒ ์ ๋ณด๋ฅผ ๊ฐ์ ธ์ฌ ์ ์๋ค๋ ์ฌ์ค์ ํ์ธํ๋ค.
selenium vs requests ์๊ฐ ๋น๊ต ๋ด์ฉ์ ์๋ ๊ฒ์๊ธ์์ ํ์ธํ ์ ์๋ค.
๋ด์ฉ์ ์์ฝํ์๋ฉด "selenium์ ๋ธ๋ผ์ฐ์ ๋ฅผ ๋์ฐ๋ ์๊ฐ๋ ์ค๋๋ฟ๋๋ฌ, ์น ์ปจํธ๋กค์ ์ฐพ๋ ์๊ฐ์ด 4๋ฐฐ ๋ ๊ฑธ๋ฆฐ๋ค."
https://deep-flame.tistory.com/27
[Python] ํฌ๋กค๋ง ๋ฐฉ๋ฒ๊ณผ ๋น๊ต (requests, BeautifulSoup, selenium)
Python์์ ์น ํฌ๋กค๋ง์ ํ๋ ๋ฐฉ๋ฒ์ ๋ ๊ฐ์ง๊ฐ ์๋ค. requests ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ์น ์ ๋ณด๋ฅผ ๋ฐ๊ณ , BeautifulSoup๋ก ํ์ฑํ๋ค. selenium ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ๋ธ๋ผ์ฐ์ ๋ฅผ ์ด์ด ์น ์ ๋ณด๋ฅผ ๋ฐ๋๋ค. ๋ณดํต ์น ์ปจํธ๋กค์ด ํ์
deep-flame.tistory.com
๋คํํ ์์ฝ ํ์ด์ง์์ ์์ฝ ๊ฐ๋ฅ ์ฌ๋ถ ๋ฐ์ดํฐ๋ฅผ ์กฐํํ๋ url์ ์ฝ๊ฒ ์ฐพ์ ์ ์์๊ณ , ์น ์ ๋ณด๋ฅผ ๊ฐ์ ธ์ค๋ ์ฝ๋๋ฅผ ์์ ํ๊ฒ ๋์๋ค.
๊ทธ ๊ฒฐ๊ณผ ๋ ๋ฌ์ ์์ฝ ์ ๋ณด๋ฅผ ๊ฐ์ ธ์ค๋ ์๊ฐ์ 142์ด์์ 12์ด๋ก ์ค์ด๊ฒ ๋์๋ค. ๊ทธ๋์ ํ์ฌ๋ 1๋ ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ถ์ถํ ์ ์๊ฒ ๋์๋ค.

๊ทธ ํ ์ด๋ฉ์ผ์ ๋ณด๋ด๋ ๊ณผ์ ์ ์๋ ๊ฒ์๊ธ์ ์ฐธ๊ณ ํ๋ค.
ํ์ด์ฌ์ผ๋ก ์ด๋ฉ์ผ ๋ณด๋ด๊ธฐ(SMTP)
์๋ ํ์ธ์ ์ด์ฝ์ ๋๋ค. ์ด๋ฒ์๋ ํ์ด์ฌ์ ํ์ฉํ์ฌ ์ง๋ฉ์ผ(Gmail)๋ก ๋ฉ์ผ ๋ณด๋ด๊ธฐ์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค. ํ์ด์ฌ์์ ๋ฉ์ผ์ ๋ณด๋ด๊ธฐ ์ํด์๋ ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ๋ณ๋๋ก ํ์ํ์ง ์์ผ๋ฉฐ, 'SMT
yeolco.tistory.com
3. ์น ์๋ฒ ๋ง๋ค๊ธฐ

๋๋ ์๊ฐํ๋ค. ๋์๊ฒ ํ์ํ๋ฉด.... ๋๊ตฐ๊ฐ๋ ํ์ํ์ง ์์๊น...?
์ด๋ฅผ ์ํด์๋ 2๊ฐ์ง ๊ณ ๋ฏผ์ด ํ์ํ๋ค.
- ์ ์ ์ ๋ณด๋ฅผ ์ด๋ป๊ฒ ๋ฐ์ ๊ฒ์ธ๊ฐ?
- ์ ์ ์ ๋ณด๋ฅผ ์ด๋์/์ด๋ป๊ฒ ๋ณด๊ดํ ๊ฒ์ธ๊ฐ?
1. ์ ์ ์ ๋ณด๋ฅผ ์ด๋ป๊ฒ ๋ฐ์ ๊ฒ์ธ๊ฐ? ๐ค
์ ์ ์ ๋ณด๋ฅผ ๋ฐ๊ธฐ ์ํด์๋ DB์ ํต์ ํ๋ ๊ฐ๋จํ ๋ก์ง์ ๊ตฌ๋ํ๋ ์น ์๋ฒ๊ฐ ํ์ํ๋ค.
Spring, Django, node.js๋ฅผ ๋น๊ตํด๋ณด์๊ณ , node.js + Express๋ฅผ ์ฑํํ์ฌ ์น ์๋ฒ๋ฅผ ๊ตฌ์ถํ๋ค.
node.js๋ ์ฑํํ ์ด์ ๋ ์๋ฒ์ ๋ฌด๋ฆฌ๊ฐ ์ ๊ธฐ ๋๋ฌธ์ด๋ค.
ํ์๋ ์๋ฒ๋ฅผ ๋ฐฐํฌํ๊ธฐ ์ํด์ AWS ํ๋ฆฌํฐ์ด EC2๋ฅผ ์ฌ์ฉํ๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ์๋ฒ์ ๋ฌด๋ฆฌ๊ฐ ๊ฐ์ง ์๋ ๊ฒ์ด ์ค์ํ๋ค.
๊ทธ๋ฆฌ๊ณ ๊ฐ๋จํ ์์
์ ์งํํ๊ธฐ์ ์ ์ ํ๋ค๋ ์ด์ ๋ ์์๋ค.
node.js๋ ์๋์ ๊ฐ์ ํน์ง์ ๊ฐ์ง๊ณ ์์ด ์๋ฒ์ ๋ฌด๋ฆฌ์ ํฐ ๋ฌด๋ฆฌ๊ฐ ๊ฐ์ง ์๋๋ค.
1. node.js๋ ์ด๋ฒคํธ ๋ฃจํ๋ผ๊ณ ๋ถ๋ฆฌ๋ ์ฑ๊ธ ์ค๋ ๋ ํ๋๊ฐ ๋ชจ๋ ์์ฒญ์ ๋ค ๋ฐ์ ์ฒ๋ฆฌํ๋ค.
2. I/O ์์ ์ ๊ฒฝ์ฐ, ๋น๋๊ธฐ ๋ฐฉ์์ผ๋ก ์์ฒญ์ ์ฒ๋ฆฌํ๋ค.์ฆ, ๋ฐ์ ์์ฒญ์ ๋ํ ์ฒ๋ฆฌ๋ฅผ ๋์ ธ๋๊ณ , ๋ค๋ฅธ ์ผ์ ํ๊ณ ์๋ค๊ฐ ์์ ์ด ์๋ฃ๋๋ฉด ์ด๋ฒคํธ ๋ฐฉ์์ผ๋ก ์์ฒญ์ด ์๋ฃ๋จ์ ์๋ฆฐ๋ค.
3. ๋ฐ๋ผ์ ๋ง์ ์์ ์์ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ํ๋ก๊ทธ๋จ์ ์ ์ ํ๋ค.
์ด ์ธ์๋ node.js๋ ์๋์ ๊ฐ์ ์ฅ์ ๋ค์ ๊ฐ์ง๊ณ ์๋ค.
4. ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ๋ง์์ ์ํ๋ ์๋น์ค๋ฅผ ์ ๋ง์ ๋ง๊ฒ ๊ตฌ์ถํ ์ ์๋ค.
5. PM2๋ฅผ ํตํด ๋ฌด์ค๋จ ๋ฐฐํฌ๋ฅผ ์์ฝ๊ฒ ํ ์ ์๋ค.
6. MongoDB์ ๊ฐ์ JSON๊ธฐ๋ฐ DB๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ Java์์๋ ๋ฐ์ดํฐ ๋ณํ์ด ์๊ธฐ์ง๋ง, node.js์์๋ ๋ณ๋์ ๋ณํ์ด ์์ด ์ ๋ฆฌํ๋ค.

2. ์น์๋ฒ์์ ๋ฐ์ ์ ์ ์ ๋ณด๋ฅผ ์ด๋์/์ด๋ป๊ฒ ๋ณด๊ดํ ๊ฒ์ธ๊ฐ? ๐ค
์ ์ ์ ๋ณด๋ฅผ DB์ ์ ์ฅํ๋ ๊ฒ์ ์ด์ฐ๋ณด๋ฉด ๋น์ฐํ๋ค. ๊ทธ๋ ๋ค๋ฉด SQL๊ณผ NoSQL ์ค ๋ฌด์์ ํ์ฉํ๋ ๊ฒ์ด ์ข์๊น?
ํ์์ ๊ฒฝ์ฐ๋ NoSQL์ ์ ํํ๋ค. ๊ทธ ์ค MongoDB๋ฅผ ์ ํํ๋ค.
๊ทธ ์ด์ ๋ ๊ฐ๋จํ๋ฉฐ ์คํค๋ง๊ฐ ๋์จํ๊ณ , ์ด๋ฉ์ผ ๋ฐ์ก ์ ๋ณด๋ฅผ ์ ์ฅํ๊ธฐ ์ํด์์ด๋ค.
์ด๋ฉ์ผ ๋ฐ์ก ์ ๋ณด: {"์ทจ์ ์๋ฆฌ datetime" : "์ ์ก ์๊ฐ"} ํํ์ ์ ๋ณด๋ฅผ ๋ฆฌ์คํธ ํํ๋ก ๊ฐ์ง ์ ๋ณด์ด๋ค. ์ด ์ ๋ณด๊ฐ ํ์ํ ์ด์ ๋ ๊ฐ์ ์๋ฆฌ์ ๋ํด์ ์ค๋ณตํด์ ๋ณด๋ด์ง ์๊ธฐ ์ํจ์ด์๋ค.

4. AWS EC2๋ฅผ ํ์ฉํ์ฌ ์๋น์ค ๊ตฌ์ถ

AWS EC2 ์ธ์คํด์ค๋ฅผ ์์ฑํ๊ณ , ์๋์ ๊ฐ์ด ์์ ์ ์งํํ๋ค.
- git์ ํตํด์ ์์ฑํ ๊นํ๋ธ์ ํ๋ก์ ํธ๋ฅผ ๊ฐ์ ธ์๋ค.
- ์น์๋ฒ๋ PM2๋ฅผ ํตํด์ ๋ฐฐํฌํ๋ค. (์ด ๊ณผ์ ์์ EC2 ์ธ์คํด์ค์ ํฌํธ๋ฅผ ์ด์ด์ฃผ๋ ๊ณผ์ ์ด ๊ผญ ํ์ํ๋ค.)
- 24์๊ฐ ์์
์คํ์ ์ํด nohup์ ํตํด์ ๋ฐฑ๊ทธ๋ผ์ด๋ ์์
์ ์คํํ๋ค.
์ด๋, ์ฃผ์ํ ์ ์ nohup์ ํตํด์ ์ ์ฅ๋๋ ๋ก๊ทธ ํ์ผ์๋ ํ์ด์ฌ ๋ด์ฅ ํจ์์ธ print()๋ฅผ ํตํ ์ถ๋ ฅ์ด ๋ํ๋์ง ์์๋ค. ๊ทธ๋์ logging ๋ชจ๋์ ์ฌ์ฉํ์ฌ ์์ ์งํ์ํฉ์ ํ์ธํ๋ค.

nohup๊ณผ logging์ ์๋ ๊ฒ์๊ธ์ ์์ธํ ์ค๋ช ์ด ๋์ด์๋ค.
https://joonyon.tistory.com/98
์ฝ๊ฒ ์ค๋ช ํ nohup ๊ณผ &(๋ฐฑ๊ทธ๋ผ์ด๋) ๋ช ๋ น์ด ์ฌ์ฉ๋ฒ
์๋ ํ์ธ์. ๋ฆฐ์์ ์จ ์ ๋๋ค. ๋ฆฌ๋ ์ค๋ฅผ ์ฌ์ฉํ๋ค ๋ณด๋ฉด ํ๋ก๊ทธ๋จ์ ๋ฐฑ๊ทธ๋ผ์ด๋์์ ์ธ์ ๊ณผ์ ์ฐ๊ฒฐ์ด ๋์ด์ ธ๋ ๋๋ ค์ผํ ์ผ์ด ๋ง์ด ๋ฐ์ํฉ๋๋ค. ๊ทธ๋ด๋ ์ฃผ๋ก ์ฌ์ฉํ๋ ๋ช ๋ น์ด๊ฐ ๋ฐ๋ก nohup ๊ณผ &
joonyon.tistory.com
https://deep-flame.tistory.com/32
[Python] logging ์ฌ์ฉ๋ฒ๊ณผ ํด๋์คํ
Python์๋ print๋ผ๋ ๊ธฐ๋ฅ์ด ์๋ค. ๋ณดํต์ ์ด ๊ธฐ๋ฅ์ ํตํด์ output์ ํ์ธํ๋ค. ๊ทธ๋ฌ๋ print๋ก๋ output์ ํ์ธํ ์ ์๋ ๊ฒฝ์ฐ๊ฐ ์๋ค. ํ์๋ airflow์ ์๋ฌ ๋ก๊ทธ๊ฐ print๋ก๋ ํ์ธ๋์ง ์์ logging ๋ชจ๋
deep-flame.tistory.com
5. ๋ง๋ฌด๋ฆฌ
์ด๋ฒ ํ๋ก์ ํธ์์ ๋๋์ ์... ๐
- ๊ณต๋ถํ๋ ๊ฒ๋ ์ค์ํ์ง๋ง, ๋ฌด์์ ๋ถ๋ชํ๋ณด๋ ๊ฒ๋ ํ์ํ๋ค.
- ๋ฌธ์ ์ ์ ์ ์ํ์ผ๋ฉด ํด๊ฒฐํ๊ธฐ ์ํ ์ฌ๋ฌ๊ฐ์ง ๊ธฐ์ ๋ค์ ์ฐพ์๋ณด๊ณ , ๋น๊ตํด๋ณด์.
(์ฒ์์ selenium์ผ๋ก ๊ตฌํํ์ ๋๋ ์๊ฐ๋ ์ค๋ ๊ฑธ๋ฆฌ๊ณ , ์๋ฌ๋ ๋ง์ด ๋ฌ๋ค. ์ฒ์๋ถํฐ ์ข ๋ ์ฐพ์๋ดค๋๋ผ๋ฉด ์์ ์ด ์ข ๋ ์ฌ์ ์ ์ ์๋ค๊ณ ์๊ฐ๋๋ค.)
์ฒซ๋ฒ์งธ ํ ์ด ํ๋ก์ ํธ์๊ณ , ํด๋ผ์ฐ๋ ํ๊ฒฝ์ ํ์ฉํ๋ ๊ฒ๋ ์ฒ์์ด๋ผ ์ฌ๋ฌ ๊ฐ์ง ์ด๋ ค์์ด ๋ง์๊ณ , ํ๋ค์๋ค.
ํ์ง๋ง ํน์ง/์ฅ๋จ์ ๋ง ๊ธ๋ก๋ง ์๊ณ ์์๋ ์ฌ๋ฌ๊ฐ์ง ๊ธฐ์ ๋ค์ ์ง์ ๋ชธ์ผ๋ก ๋๋ ๊ฒฝํ์ ์ ๋ง ๊ฐ์ง ๊ฒฝํ์ด๋ผ๊ณ ์๊ฐํ๋ค!
๐ ํด๋น ํ๋ก์ ํธ ๋ด์ฉ์ ์๋ ๊นํ๋ธ์์ ํ์ธํ ์ ์๋ค.
https://github.com/DeepFlame-JR/RoomEscape_Cancellation
GitHub - DeepFlame-JR/RoomEscape_Cancellation: ๋ฐฉํ์ถ ๋น์๋ฆฌ๋ฅผ ์ฐพ์์ ์๋ฆฝ๋๋ค.
๋ฐฉํ์ถ ๋น์๋ฆฌ๋ฅผ ์ฐพ์์ ์๋ฆฝ๋๋ค. Contribute to DeepFlame-JR/RoomEscape_Cancellation development by creating an account on GitHub.
github.com
'Personal > Toy Project' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| AWS EC2์ Python Selenium ์ ํ์ฉํ ํ ์ด ํ๋ก์ ํธ ๐ป (feat. ๋ฐฉํ์ถ ์๋ฆฌ ์ฐพ๊ธฐ!) (1) | 2022.01.07 |
|---|