Blog
About Me
citeFredโs Blog
/
Tags
/
Python
Blog
About Me
citeFredโs Blog
/
Tags
/
Python
Share
Blog
About Me
๐ท๏ธ
Python
# of Posts
10
1 more property
Gallery
Search
3์ฃผ์ฐจ๋ Python์ ๋ฌธ๊ณผ ์นํฌ๋กค๋ง, MongoDB๊น์ง ๊ณผ์ ์ ๋ฐฐ์ ๋ค.
Python:
โข
ํจ์, ๋ณ์, ์กฐ๊ฑด๋ฌธ, ๋ฐ๋ณต๋ฌธ ๋ฑ์ด Python์์ ์ด๋ป๊ฒ ํํ๋๋์ง ๊ธฐ์ด ๋ฌธ๋ฒ์ ์ฌ์ฉ
โข
์ฃผ์ํด์ผ ๋ ๊ฒ์ ํจ์๋ def๋ผ๋ ๋ช ์นญ์ผ๋ก ์์ํ๊ณ ' : ' ์ฝ๋ก ์ ์ฌ์ฉํ๋ค. ๋ํ ์คํ๋ ํจ์ ๋ด์ฉ์ ' ' ํญ ๋น๊ณต๊ฐ์ผ๋ก ์ด๋ง์ถค์ด ๊ผญ ๋ง์ถฐ์ค์ผ ํ๋ค๋ ์
โข
๊ฐ์ํ๊ฒฝ venv ๊ตฌ์ถ๋ฒ(python3 -m venv .venv)
โข
venv๋ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค์น๋ฒ (pip install xxx)
โข
๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ํฌํธ(import xxx)
โข
requests ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉํด๋ณด๊ธฐ ๋ฐ์ดํฐ ๊ฐ์ ธ์ค๊ธฐ (data =ย requests.get(โlinkโ)
โข
ํฌ๋กค๋ง์์ **BeautifulSoup ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉํด๋ณด๊ธฐ(**์ฐ๋ฆฌ๊ฐ ์ํ๋ ํน์ ๋ถ๋ถย ์ ๋น ๋ฅด๊ณ ์ฝ๊ฒ ํํฐ๋ง ํด์ฃผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ)
โข
ํฌ๋กค๋ง ํ์ ์ฝ๋
โข
soup์ select()๋ฅผ ํตํด ์ํ๋ ๋ฐ์ดํฐ ์ค์ฝํ๋ฅผ ์ง์
MongoDB
โข
ํด๋ผ์ฐ๋ ์๋น์ค์ธ MongoDBย Atlas ๊ฐ์
[Python][MongoDB]16 3์ฃผ์ฐจ Python, MongoDB, Crawling ์คํฐ๋ ํ๊ณ (WIL)
ํ์ด์ฌ ์ ๋ฌธ
โข
๋ฐฐ์ด์ :
โข
์ด๋ ค์ด ์ :
MongoDB ์ ๋ฌธ
โข
๋ฐฐ์ด์ :
โข
์ด๋ ค์ด ์ :
"Genie" ์ง๋ ์์ ์ฐจํธ ๋ฐ์ดํฐ ํฌ๋กค๋ง
โข
๋ฐฐ์ด์ :
โข
์ด๋ ค์ด ์ :
[Python][MongoDB]15 Python, Crawling, MongoDB, Atlas Cloud DB ๊ธฐ์ด ๋ฐฐ์ด์ , ์ด๋ ค์ ๋์
ํ์ฌ๊น์ง ๋ฐฐ์ด ๋ด์ฉ๋ค๋ก
Genie๋ผ๋ ์์ ์คํธ๋ฆฌ๋ฐ ์๋น์ค์์ ์ค์๊ฐ, ์ผ๊ฐ, ์ฃผ๊ฐ, ์๊ฐ ๋ฑ ๋ค์ํ ๋ญํน ์ฐจํธ๋ฅผ ์ ๊ณตํ๋ค.
๊ทธ ์ค ์ต๊ทผ์ธย
2023๋ 6์ ์๊ฐ ์์ ๋ญํน ์ฐจํธ
๋ฅผ ํฌ๋กค๋งํ๊ณ
โข
URL =ย
https://www.genie.co.kr/chart/top200?ditc=M&rtm=N&ymd=20230601
โข
"์์ / ๊ณก ์ ๋ชฉ / ๊ฐ์"
๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๋ ๊ฒ์ ์ค์ตํ๊ณ ์ ํ๋ค.
0. ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ํฌํธ์ HTML ํฌ๋กค๋ง
์น ํฌ๋กค๋ง์ ์ํด์ requests๋ฅผ
๋ฐ์์จ html ์์ค๋ฅผ parsing(๋ฌธ์์ด๋ค์ ๋ถ์/๋ถํด/๊ตฌ์กฐํ/๊ฐ๊ณต ํด์ฃผ๋ ํ๋ก์ธ์ค)ํด์ค ์ ์๋ beautifulsoup์
์ํฌํธํ๋ฉด์ ์์ํ๋ค.
import, requests.get(), BeautifulSoup()
์ด ์คํ๋๊ณ ๋ฐ์ดํฐ๊ฐ ๋ณ์์ ๋ด๊ธฐ๊ณ ์ฎ๊ฒจ์ง๋ ๊ณผ์ ์ ๋ฌธ์ ๊ฐ ์๋์ง ์ฐ์ ๋๋ฒ๊น ํด์ค๋ค.
html ์์ค๋ฅผ soup์ด๋ผ๋ ๋ณ์์ ๋ด์๋์๋ค.
[Python][MongoDB]12 "Genie" ์ง๋ ์์ ์ฐจํธ ๋ฐ์ดํฐ ํฌ๋กค๋ง ์ค์ต
requests, beautifulsoup ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํ์ฉํ์ฌ ์น ํ์ด์ง์ ์ํ๋ ์ ๋ณด๋ฅผ ํฌ๋กค๋งํ๊ณ DB์ insert, read, updateํ๋ ๊ณผ์ ๊น์ง ์งํํ๋ค.
์ด๋ฒ์๋,
์น ํฌ๋กค๋ง ํ ๋ฐ์ดํฐ๋ฅผ Insertํ DB ์๋ฃ๋ฅผ
โข
DB์์
ย ์ํ๋ ์ ๋ณด๋ฅผ ์ญ์ ํ๋ == Delete == Delete_one
๋ฅผ ์งํํด๋ณด๋ ค ํ๋ค.
1. Delete == delete_one
DB์ ์ ์ฅ๋ ๋ฐ์ดํฐ์ค์
"
์ํ ์ ๋ชฉ
ย '
๋ถ๋น๊ฑฐ๋
'์
ย ๋ฐ์ดํฐ๋ฅผ ์ญ์ ํ๋ค.
1๊ฐ ์ญ์ delete_one ์ฝ๋๋ ๋ค์๊ณผ ๊ฐ๋ค.
[Python][MongoDB]11 DB์ ์ ์ฅ๋ ๋ฐ์ดํฐ๋ฅผ ์ ๊ฑฐํ๊ธฐ(Delete) delete_one
requests, beautifulsoup ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํ์ฉํ์ฌ ์น ํ์ด์ง์ ์ํ๋ ์ ๋ณด๋ฅผ ํฌ๋กค๋งํ๊ณ DB์ insert, readํ๋ ๊ณผ์ ๊น์ง ์งํํ๋ค.
์ด๋ฒ์๋,
์น ํฌ๋กค๋ง ํ ๋ฐ์ดํฐ๋ฅผ Insertํ DB ์๋ฃ๋ฅผ
โข
DB์์
ย ์ํ๋ ์ ๋ณด๋ฅผ ์์ (ํธ์ง)ํ๋ == Update == Update_one
๋ฅผ ์งํํด๋ณด๋ ค ํ๋ค.
1. Update == update_one
DB์ ์ ์ฅ๋ ๋ฐ์ดํฐ์ค์
"
์ํ ์ ๋ชฉ
ย '
๋ถ๋น๊ฑฐ๋
'์
ย ์ฐ๋ น ์ ํ
์ย
'18์ธ ์ด์ ๊ด๋๊ฐ'
๋ก ์์ ํ์"
โข
์ํ ์ ๋ชฉ = title์ด๋ผ๋ key
โข
๋ถ๋น๊ฑฐ๋ = title์ value๊ฐ
โข
์ฐ๋ น์ ํ = 'age'๋ผ๋ key์ value๊ฐ์ '18์ธ ... '๋ก
ย ์์
1๊ฐ ๋ฐ๊พธ๊ธฐ update_one ์ฝ๋๋ ๋ค์๊ณผ ๊ฐ๋ค.
๊ธฐ์กดย '๋ถ๋น๊ฑฐ๋' ์ํ์ ์ฐ๋ น์ ํ์ธ 'age' key๊ฐ์ย '์ฒญ์๋ ๊ด๋๋ถ๊ฐ'๋ผ๋ value๋ฅผ ๊ฐ์ก์ง๋ง
์คํ ์
[Python][MongoDB]10 DB์ ์ ์ฅ๋ ๋ฐ์ดํฐ๋ฅผ ์์ ํ๊ธฐ(Update) update_one
0. ์ ํฌ๋กค๋ง ์ค์ต ๋งํฌ์ ์์ฝ
์น ํฌ๋กค๋ง
์ ํ์ ์ฝ๋๋ ๋ค์๊ณผ ๊ฐ๋ค.
URL์ ์ํ๋ URL๋ก ๋ณ๊ฒฝํ๋ฉด ๋๋ค.
์ดํ beautifulsoup ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํ์ฉํด์ ์ํ๋ ์ ๋ณด๋ง ๊ฐ์ ธ์ค๊ฒ ์ธํ ํ๋ค.
์ฌ๊ธฐ๊น์ง ์งํ๋๋ฉดย
rank, title, rate ๊ฐ ๋ณ์์ ์น์์ ํฌ๋กค๋งํ ๋ฐ์ดํฐ๋ฅผ ๋ด๊ฒ ๋๋ค.
โข
rank = ๋ญํน ์์
โข
title = ์ํ ์ ๋ชฉ
โข
rate = ํ์
์ด ๋ด์ฉ๊น์ง๊ฐ ์ ์ค์ต์ ์์ฝ์ด๋ค.
์น ํ์ด์ง๋ฅผ ํฌ๋กค๋งํ์ฌ console์ฐฝ์์ ๋ฐ์ดํฐ๋ฅผย
ํ์ธ
ํ๋ ๊ฒ์ด ์ด์ ์ค์ต์ด์๋ค๋ฉด
์ด๋ฒ์๋ย
๋ฐ์ดํฐ๋ฅผ DB์ ์ฐ๋์์ผ ์ ์ฅ, ์ฝ๊ธฐ, ์์ , ์ญ์ (CRUD)ํ๋ ๊ฒ์ด ๋ชฉ์
์ด๋ค.
1. ํฌ๋กค๋ง์ ๊ตฌํํ ๋ถ๋ถ์ DB ์ฐ๊ฒฐ ์ถ๊ฐ
[Python][MongoDB]08 DB์ ์ ์ฅ ํ๊ธฐ โ ์น ํฌ๋กค๋ง ๋ฐ์ดํฐ(Create) Insert_one
requests, beautifulsoup ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํ์ฉํ์ฌ ์น ํ์ด์ง์ ์ํ๋ ์ ๋ณด๋ฅผ ํฌ๋กค๋งํ๊ณ DB์ insertํ๋ ๊ณผ์ ๊น์ง ์งํํ๋ค.
์ด๋ฒ์๋,
์น ํฌ๋กค๋ง ํ ๋ฐ์ดํฐ๋ฅผ Insertํ DB ์๋ฃ๋ฅผ
โข
DB์์
ย ์ํ๋ ์ ๋ณด๋ฅผ ์ฐพ์์ค๋ == Read == Find_one / Find
๋ฅผ ์งํํด๋ณด๋ ค ํ๋ค.
0. Insert ๋ณต์ต
์ฐ์ insert ๊ณผ์ ์ ๋ณต์ตํ ๊ฒธ db.movies2 ๋ผ๋ collection์
2010๋ ์ํ ๋ญํน ์น ํ์ด์ง์์ ์๋ก ๋ฐ์ดํฐ๋ฅผ insertํ๋ค.
movies2 collection์ ๋ฐ์ดํฐ๋ฅผ ๋ฃ๋ ์คํฌ๋ฆฝํธ๋ ๋ค์๊ณผ ๊ฐ๋ค.
1.1 Read == Find_one
DB์ ์ ์ฅ๋ ๋ฐ์ดํฐ์ค์
"
์ํ ์ ๋ชฉ
ย '
์์ ์จ
'์ย
์์
๋ฅผ ๊ฐ์ ธ์ค์"
โข
์ํ ์ ๋ชฉ = title์ด๋ผ๋ key
[Python][MongoDB]09 DB์ ์ ์ฅ๋ ๋ฐ์ดํฐ๋ฅผ ๋ณด๊ธฐ(Read) find_one, find
MongoDB๋ BSON์ผ๋ก ๋ฐ์ดํฐ๊ฐ ์์ด๊ธฐ ๋๋ฌธ์ Array ๋ฐ์ดํฐ๋ Nestedํ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ฒ ๋ฃ์ ์ ์๋ ํน์ง์ด ์๋ค.
์ฐ์ Oracle์ ์ฃผ๋ก ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ํ๊ฐ๋ฆฌ๋ ๋ถ๋ถ์ด ๋ง๋ค.
MongoDB์ DB๊ณ์ธต๊ตฌ์กฐ ๋ถํฐ Oracle๊ณผ ๋น๊ตํด์ ๊ฐ๋ ์ ์ ๋ฆฌํ๋ค.
SQL๋ฌธ์ ๋์ฒด๋ก ์ ์ฌํ๋ฐ ๋น๊ตํ์ฌ ์ฃผ์ํ๋ฉด์ ํ ์คํธํ๋ค.
db =ย
๋ฐ์ดํฐ๋ฒ ์ด์ค๋ย
์ปฌ๋ ์ ์ ๋ฌผ๋ฆฌ์ ์ปจํ ์ด๋
. ํ๋์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์๋ ๋ณดํต ์ฌ๋ฌ๊ฐ์ ์ปฌ๋ ์ ์ ๊ฐ์ง ์ ์๋ค.
user =ย
collection์ด๋ค.ย
Document ์ ๊ทธ๋ฃน
์ด๋ฉฐ RDBMS Oracle์ ์๋ฅผ ๋ค๋ฉดย
Table ๊ณผ ๊ฐ์ ๊ฐ๋
+- collection ๋ด์ย Document ๋ย
ํ๋์ ํค(key) ์ ๊ฐ(value)์ ์งํฉ
์ด๋ค.
์ด์ ๊ฐ์ ๊ฐ๋ ์์๋ถํฐ CRUD SQL๋ฌธ์ ์ดํดํด์ผ ํ๋ค.
์๋ก db.users.insert_one({ aaa:bbb }) ๋ฌธ์ ๊ฒฝ์ฐ
"aaa๋ผ๋ key๊ฐ์ bbb๋ผ๋ value๊ฐ์ ๊ฐ์งย
Field
๋ฅผ,
users๋ผ๋ย
collection
(table)์ ๋ฃ์ด๋ผ. => db๋ผ๋ ํฐ ํ์์"
๋ผ๋ ์๋ฏธ๋ก ํด์๋ ์ ์๋ค.
MongoDB์ Collection ์์ฑ๋ถํฐ CRUD๋ฌธ์ ๋ณต์ต
[Python][MongoDB]14 Oracle๊ณผ MongoDB ๋น๊ต CRUD ๋ณต๊ธฐ
๋ด ๋ก์ปฌ PC์ ์ค์น๋ Python <-> ย ์น ํด๋ผ์ฐ๋ ์๋น์ค์ ์์นํ MongoDB
์ด ๋๊ฐ๋ฅผ ์ฐ๊ฒฐํ๊ณ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๋, ์ํธ ์ ์ด ํ ์ ์๋๋ก ํ๋ ๊ฒ์ด ์ด๋ฒ ์ค์ต์ด๋ค.
์ฐ์ Python์์ ์น์ ์๋ MongoDB๋ฅผ ์กฐ์ํ๊ธฐ ์ํด์๋
์กฐ์ ํ ์ ์๋ "
๋ผ์ด๋ธ๋ฌ๋ฆฌ
"๊ฐ ํ์ํ๋ค.
โข
dnspython
โข
pymongo
1. dnspython, pymongo ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค์น
VSCode์์ venv ์ค์ ๋ ํฐ๋ฏธ๋์์ dnspython์ ์ค์นํ๋ค.
๋ง์ฐฌ๊ฐ์ง๋ก VSCode ํฐ๋ฏธ๋์์ pymongo๋ฅผ ์ค์นํ๋ค
2. pymongo ๋ฅผ ์ฌ์ฉํด์ DB์ ์ ์ํด๋ณด์
pymong๋ก DB๋ฅผ ์ฐ๊ฒฐํ๋ ์ฝ๋์ด๋ค.
[Python][MongoDB]06 Atlas(Cloud)์ Python ์ฐ๊ฒฐ dnspython , pymongo ๋ผ์ด๋ธ๋ฌ๋ฆฌ + SSL ์๋ฌ ํด๊ฒฐ
DB๋ฅผ ์ฌ์ฉํ๋ ์ฃผ๋ ์ด์ ?
๋ฐ์ดํฐ๋ฅผ ๋ฃ๊ธฐ ์ํจ? (X)
๋ฐ์ดํฐ๋ฅผ ์ ์ฐพ๊ธฐ ์ํจ (O)
DB์ ์ข ๋ฅ
โข
RDBMS(SQL)
โข
ํ/์ด์ ์๊น์ธ๊ฐ ์ ํด์ง
โข
์์ ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ๊ฒ๊ณผ ์ ์ฌํ๋ค.
โข
์ ํํ๋์ด ์๋ ๋งํผ ๋ฐ์ดํฐ์ ์ผ๊ด์ฑ์ด ์๋ค.
โข
๋ถ์์ ์ฉ์ด ํ ์ ์๋ค.
โข
No-SQL(Not-only SQL)
โข
ํ/์ด์ ์๊น์ธ๊ฐ ์ ํด์ง
โข
์์ ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ๊ฒ๊ณผ ์ ์ฌํ๋ค.
โข
์ ํํ๋์ด ์๋ ๋งํผ ๋ฐ์ดํฐ์ ์ผ๊ด์ฑ์ด ์๋ค.
โข
๋ถ์์ ์ฉ์ด ํ ์ ์๋ค.
ํด๋ผ์ฐ๋ ์๋น์ค์ธ MongoDB Atlas ๊ฐ์ ํด๋ณด์
[Python][MongoDB]13 DB ๊ฐ๋จ ๊ฐ๋ ๋ฐ MongoDB Atlas ์ค์
Load more