스파르타 코딩/[왕초보] 비개발자를 위한, 웹개발 종합반 (프로그래밍 실무, 풀스택)

[3주차] 개발일지

곰돌이볼 2022. 7. 8. 21:55

3주차 강의목록

3-1 3주차 설치

3-2 연습 겸 복습 - 스파르타피디아에 OpenAPI 붙여보기

3-3 파이썬 시작하기

3-4 파이썬 기보공부 (1)

3-5 파이썬 기보공부 (2)

3-6 파이썬 패키지 설치하기

3-7 패키지 사용해보기

3-8 웹스크래핑(크롤링) 기초

3-9 Quiz_웹스크래핑(크롤링) 연습

3-10 DB개괄

3-11 mongoDB 시작하기

3-12 mongoDB 연결하기

3-13 mongoDB로 DB조작하기

3-14 웹스크래핑 결과 이용하기

3-15 Quiz_웹스크래핑 결과 이용하기

3-16 3주차 끝 & 숙제 설명

 

배운 것 요약정리

  • 파이썬(python) 기본 문법
# 변수
a = 10
b = a

# 리스트
list = ['사과', '바나나']
list.append('수박')

# 딕셔너리
dict = {'사과':10, '바나나':20}


# 함수
def sum(a, b):
	print('더하는 함수')
    return a+b
    
# 조건문
if a > 20:
	print(a)
else:
	print(b)
   
# 반복문
fruits = ['사과', '배', '수박']
for fruit in fruits:
	print(fruit)

 

 

  • 패키기( = 외부 라이브러리) : 모듈을 모아놓은 단위
  • 가상머신(virtual machine) : 프로젝트 별로 패키지가 담기는 공간을 분리된 실행환경 → 파이썬에서 venv 폴더가 패키지를 보관하는 폴더이다.

 

  • 크롤링

크롤링하기 위해서 python 코드에서 패키지로 requests와 bs4를 다운받아서 사용하였다. 이 패키지를 이용해서 다른 웹 페이지의 정보를 가져와서 원하는 형태로 데이터를 가공할 수 있었다.

 

# 크롤링 기본 코드
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.naver?sel=pnt&date=20210829',headers=headers) # 네이버영화 랭킹 URL
soup = BeautifulSoup(data.text, 'html.parser')

# 문법
movies = soup.select('#old_content > table > tbody > tr')
for movie in movies:
    title = movie.select_one('td.title > div > a')
    rank = movie.select_one('td:nth-child(1) > img')
    star = movie.select_one('td.point')
    if title is not None:
        print(rank['alt'], title.text, star.text)

 

  • mongoDB

크롤링한 데이터를 데이터베이스 저장하기 위해서 사용한 데이터베이스 프로그램이다.

mongoDB는 noSQL이다.

구축한 mongoDB Altas를 pycharm과 연결하기 위해서 pymongo, dnspython 패키지를 설치한다.

 

# mongoDB 데이터 관리 기본 코드
from pymongo import MongoClient
import certifi
ca = certifi.where()
client = MongoClient('mongodb+srv://test:sparta@cluster0.e7kpc.mongodb.net/Cluster0?retryWrites=true&w=majority', tlsCAFile=ca)
db = client.dbsparta

# 데이터 넣기
doc = { # document 약자
    'name':'Cassy',
    'age':23
}

db.users.insert_one(doc)
db.users.insert_one({'name':'Cassy','age':23})
db.users.insert_one({'name':'Chris','age':30})

# 데이터 가져오기 1) 여러 개일 경우
all_users = list(db.users.find({},{'_id':False})) # {} -> 빈 조건
for user in all_users:
    print(user)

# 데이터 가져오기 2) 한 개일 경우
user = db.users.find_one({'name':'Bob'})
print(user)
print(user['age'])

# 데이터 업데이트
db.users.update_one({'name':'Bob'},{'$set':{'age':19}}) # 첫번째 {}는 조건, 두번째 {}는 변경내용

user = db.users.find_one({'name':'Bob'})
print(user)

# 데이터 삭제
db.users.delete_one({'name':'Bob'})

 

느낀점

  다른 웹 페이지의 데이터를 가져와서 필요한 부분만 이용하는 것을 해보았는데 재밌었다. '이게 다른 크롤링이구나...' 라고 생각했다. 크롤링한 데이터를 mongoDB에 넣고, 이 데이터를 다룰 수 있는게 재미있었다. 아직은 조금 헷갈리고 몇 일 복습 안하면 기억이 잘 나지 않아서 주석을 더 꼼꼼이 작성해야겠다고 느꼈다. 예전에 웹페이지 만들때, 이 내용들을 미리 알았더라면 좀 더 쉽게 웹페이지를 만들 수 있었을텐데... 아쉬움이 든다.