[항해4기] 스파르타코딩클럽 웹개발 종합반 3주차 개발일지

곽태민·2021년 10월 10일
0

웹개발 종합반 3주차 개발일지

  1. 파이썬 기초공부
  2. 파이썬 패키지 설치 방법
  3. 웹스크래핑(크롤링)
  4. DB개괄
  5. pymongo로 DB조작하기
  6. 3주차 숙제

1. 파이썬 기초공부

파이썬의 기초 분법에는

  • 변수 & 기본연산
  • 자료형
  • 함수
  • 조건문
  • 반복문
    이 있다. 실습을 해보며 느낀점은 따라치는건 쉽지만 응용을 하거나 혼자 할 때
    생각이 잘 안난다..

2. 파이썬 패키지 설치 방법 (Mac 기준)

  1. pycharm에서 상단에 pycharm을 클릭한다.
  2. preferences에 클릭 후 Python Interpreter에 접속한다.
  3. 본인이 원하는 패키지를 검색 후 install을 해준다.

3. 웹스크래핑(크롤링)

크롤링 기본 세팅
import requests
from bs4 import BeautifulSoup

headers = {'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36'}
data = requests.get('https://movie.naver.com/movie/sdb/rank/rmovie.nhn?sel=pnt&date=20200303',headers=headers)

soup = BeautifulSoup(data.text, 'html.parser')

크롤링을 하면서 내가 코딩하는 대로 원하는 데이터를 받아서 볼 수 있다는 게 재밌었다.
하지만, 반복 학습이 많이 필요할 것 같다.

4. DB개괄

Datavase에는 크게 두가지 종류가 있다.

RDBMS(SQL)
행과 열의 생김새가 정해진 엑셀에 데이터를 저장하는 것과 유사하다. 예를 들어 데이터 50만 개가 적재된 상태에서, 갑자기 중간에 열을 하나 더하기는 어려울 것이다. 그러나, 정형화되어 있는 만큼, 데이터의 일관성 및 분석에 용이할 수 있다.

ex) MS-SQL / My-SQL

No-SQL
딕셔너리 형태로 데이터를 저장해두는 DB다. 고로 데이터 하나 하나 마다 같은 값들을 가질 필요가 없게 된다. 자유로운 형태의 데이터 적재에 유리한 대신, 일관성이 부족할 수 있다.

ex) MongoDB

5. pymongo로 DB조작하기

pymongo 기본 코드
from pymongo import MongoClient
client = MongoClient('localhost', 27017)
db = client.dbsparta

  • DB연결하기 & 데이터 넣기 (insert)
  • 모든 결과 값을 보기 (find)
  • 특정 결과 값을 뽑아 보기 (find_one)
  • 수정하기 (update_one)
  • 삭제하기 (delete_one) -> 거의 안 씀

기본 코드를 잘 저장해 놓고 있으면 코딩할때 유용하게 응용할 수 있을 것 같다.

6. 3주차 숙제

아래와 같이 이번 3주차 때 진행한 숙제이다.
지니 음악 사이트에서 순위 / 제목 / 가수를 크롤링해서 코딩을 해봤다.

import requests
from bs4 import BeautifulSoup

headers = {'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36'}
data = requests.get('https://www.genie.co.kr/chart/top200?ditc=D&ymd=20200403&hh=23&rtm=N&pg=1',headers=headers)

soup = BeautifulSoup(data.text, 'html.parser')

trs = soup.select('#body-content > div.newest-list > div > table > tbody > tr')

for tr in trs:
    title = tr.select_one('td.info > a.title.ellipsis').text.strip()
    rank = tr.select_one('td.number').text[0:2].strip()
    artist = tr.select_one('td.info > a.artist.ellipsis').text
    print(rank, title, artist)

2주차보다는 3주차가 그래도 '덜'어려웠다. 현재 3주간 진행을 했을 때, 점점 코드에 의미를 알고, 스스로가 코딩을 할 때면 그래도 성장을 하는 것 같아 보인다. 그래도 반복 학습을 하여, 코드를 치는 속도를 높이고, 자기주도적으로 할 수 있게 노력을 해야겠다.

profile
안녕하십니까 :)

0개의 댓글