개발 일기 및 회고/회고

항해 99 사전강의 3주차 회고 파이썬, mongodb

B_Tae 2022. 4. 2. 09:27

본 내용은 항해99 & 스파르타코딩클럽에 강의 내용이 포함되어 있습니다.

문제 시 바로 삭제하겠습니다.


 

이번 주차에서는 파이썬과 mongodb에 대해 학습했다. 

파이썬을 이용하여 크롤링를 학습하고 mongodb와 파이썬을 이용해 서버에 데이터를 저장, 수정, 삭제, 가져오기 등을 학습한다.(파이썬의 pymongo 패키지를 이용하여 mongodb관리)

 

3주차 목차 

3주차 부터는 내가 학습해보지 못한 언어와 개념을 학습한다. 매번 html, css, js만을 학습하면서 어떻게 데이터를 가져오고 각기 다른 페이지에 정보를 서로 교환할 수 있는지 (admin 페이지에서 송출하면 client 페이지가 어떻게 받는지) 서버에 정보를 어떻게 활용할 수 있는지에 대해 항상 궁금증을 가지고있었고 어렴풋 어떤 과정을 거쳐 데이터가 처리될 것이라는 상상만을 하고 있었다. 

이번 주차에서는 프론트엔드와 백엔드를 결합하지는 않았지만, 서버를 어떻게 다룰 수 있는지에 대해 배웠고, 다른 홈페이지에 정보를 가지고 내 프로젝트에 가져와 사용(크롤링)할 수 있는지를 배웠다. 

 

우선 파이썬은 매우 직관적인 언어라는 설명을 들었고 이에 동의하게 됐다. 간단하게 기초 문법을 보면, 변수, 자료형, list, dictionary, 함수, 조건문, 반복문이 있다. 내용(?) 용어는 js와는 약간 다르다. 

받아드리기 크게 어렵지 않다. 나는 가장 큰 차이를 두는게 괄호와 들여쓰기라 생각된다. 

js는 함수, 조건문 등 괄호를 통해 구분짓는다. 즉 괄호가 '어디서부터 어디까지가 이 조건 혹은 함수에 내용이다'라는 의미를 갖을 수 있다고 본다. 파이썬은 괄호가 아닌 들여쓰기로 구분을 짓는다. 함수나 조건문 이후에 들여쓰기가 됐다면, 이 내용은 포함된 내용이고 들여쓰기가 안됐다면 그 전 들여쓰기 까지가 함수나 조건문 등의 내용이 되는 것이다.

그렇기 때문에 만약 코드 시작을 들여쓰고 시작한다면 그 코드는 오류를 발생할 것이다. ( 들여쓰기를 한 번해야하는데 2번 해도 실행되지 않는다) 

 

// js

function f(a,b){
return a+b;
}
....



// python

def f(a,b):
	return a+ b
....

 

나는 처음에 이 점이 오히려 불편하다고 생각됐다. js를 작성하면 들여쓰기는 가독성을 위한 수단이였고, 작성 후에 정리를 하면 충분히 가독성을 높일 수 있었다. 반면 파이썬은 작성하면서 들여쓰기를 신경써야하다보니 의도치 않은 오류를 많이 범했다. 

지금은 더 편한 것 같다는 생각을 조금씩 하고 있다. js를 작성했을 때 중간 내용을 수정하다보면 묶이는 괄호가 같은 괄호인지 신경쓰고 다르게 삭제했다면 어디를 맞춰야 할지 계산하고 있던 경험이 많았다. 파이썬은 그런 부분만큼은 확실히 잡아 줄 수 있을 것이란 생각과 완성된 코드를 읽는데 가독성이 더 뛰어난 느낌을 받았다. 

 

 

파이썬에서 패키지는 외부 라이브러리라 생각 할 수 있겠다. 

처음에는 requests패키지를 이용해 2주차에 학습했던 API정보를 가지고 처리하는 방법을 연습해보고

beautifulsoup4 패키지를 통해 크롤링을 하는 방법을 연습했다. 

크롤링은 웹스크래핑이라 부를 수 있고 단어 그대로 웹에 내용을 가져온다는 의미로 받아드려졌다. 

외부 웹페이지에 html을 가져와 선택자, 태그 등의 조건을 가지고 html에 정보를 가져올 수 있었다. 이렇게 html을 가져오기 위해서 뷰티풀숩을 사용했고 URL을 받아 html을 변수에 저장해 사용했다. 

html을 선택자를 통해 태그를 가져오고 (select() or select_one()) 그 태그에 속성 혹은 텍스트 내용을 가져오는 방식으로 네이버 영화의 순위와 제목 평점을 크롤링 해봤다. 

 

 

DB(DataBase) 우리는 원하는 정보를 빠르고 쉽게 찾기위해 DB를 이용한다. 

요즘에는 클라우드에서 제공하는 DB를 이용하는게 트렌드로 변해간다고 들었다. 

DB는 크게 SQL과 NoSQL로 나눌 수 있고 각각 대표적으로 My-SQL과 mongoDB가 있다. 

SQL은 정해진 칸에 데이터를 저장하는 것과 유사해 데이터의 일관성이나 분석면에서는 더 좋은 강점을 보인다. 하지만 데이터가 많이 쌓인 상태에서 정해진 칸을 변경하는 것은 어려운 단점이 있다. 이 단점과 장점이 바뀐게 NoSQL이다. 객체 형태로 데이터를 저장하기 때문에 자유로운 형태로 변경하기 용이하다. 반면에 자유롭다보니 일관성이 떨어질 수 있다.

mongoDB - Atlas와 프로젝트를 연결해 데이터를 저장하고 가져오는 방법을 연습하고 크롤링과 같이 연습하면서 웹html을 통해 가져온 정보를 DB에 저장하는 학습을 했다.

 

 

 

 

3주차 숙제 결과물

 

지니뮤직에 순위를 크롤링해 원하는 정보만 얻는 방법을 진행해 봤다. 이 과정에서 확실히 문법적인 이해도가 아직은 부족하다는 느낌을 받았고 15등수에 19금 때문에 여러 방법을 이용해서 해결해 봤는데(텍스트 글자 제한, 글자 지우기 등) 어떤 방법이 적절한 방법인지 판단을 하진 못했고, 그 코드마저 문법적으로 완벽하게 이해하기 어렵웠다..