지난 1,2주차에서 Frond-End쪽 기술을 공부했다면, 3주차에는 파이썬 패키지 및 DB에 대해 공부하는 시간이였다.
가상환경 venv
다른 프로그램에 영향이 가지 않도록, 각 프로젝트 별로 패키지를 따로 설치해두고 관리하는 공간
다음과 같이 venv 환경을 생성할 수 있다.
python -m venv '폴더명'
폴더명을 넣고 실행하게되면 가상환경 폴더가 생성되고 해당 폴더에 파이썬 패키지를 설치하면 된다.
웹 크롤링 라이브러리
- requests: URL로부터 HTML을 가져오기 위해 사용
- BeautifulSoup: 가져온 HTML로부터 필요한 정보를 용이하게 추출 가능
주로 다음과 같이 사용된다.
import requests
from bs4 import BeautifulSoup
headers = {'User-Agent' : '...'}
data = requests.get('URL', headers=headers)
soup = BeautifulSoup(data.text, 'html.parser')
이렇게 변수 soup에 우리가 기입한 URL로부터 HTML이 담겨져왔다.
이제 원하는 데이터만 가져오면 되는데, select() 함수를 사용하면 간편하다.
# 선택자를 사용하는 방법 (copy selector)
soup.select('태그명')
soup.select('상위태그명.클래스명 > 하위태그명.클래스명')
soup.select_one('...')
SQL vs NoSQL
DB는 일반적으로 프로그램과 같이 컴퓨터에 설치해서 사용하지만, Cloud 형태로 외부에서 제공해주는 경우도 많다.
예로서, MongoDB Atlas가 있다.
DB 조작 라이브러리
- pymongo: MongoDB를 python으로 조작하기 위한 라이브러리
- dnspython: pymongo 동작에 필요한 라이브러리로서, 도메인을 받아 송수신하는데 사용
DB에 데이터를 저장하거나, 찾거나, 수정할 경우에는 다음과 같은 코드를 사용하면 가능하다.
클라이언트를 DB에 연동하고나서,
# 저장 - 예시
doc = {'name':'bobby','age':21}
db.users.insert_one(doc)
# 한 개 찾기 - 예시
user = db.users.find_one({'name':'bobby'})
# 여러개 찾기 - 예시 ( _id 값은 제외하고 출력)
all_users = list(db.users.find({},{'_id':False}))
# 바꾸기 - 예시
db.users.update_one({'name':'bobby'},{'$set':{'age':19}})
# 지우기 - 예시
db.users.delete_one({'name':'bobby'})
DB를 조작할 때마다 가져다쓰면 된다.