개발자 되는 중/개발 공부

스파르타 코딩 웹 개발 개발일지 3주차

SeonChoco 2022. 8. 27. 03:28

 a == // 같으면

a != // 같지 않으면

a is not // 같지 않으면

 

파일 실행할 때는 오른쪽 마우스 클릭 하고 실행 클릭

 

~하면 이라는 의미 넣고 싶을 때? : 콜론 사용

 

print()// 프린트할 때는 소괄호 사용

 

파이썬이 강사님이 말했던데로 들여쓰기 하고 안하고에 따라 오류가 있고 없고 함.

 

beautiful soup이라는 패키지를 가져와서

네이버 페이지에서 제목을 가져오는 법을 따라했다. 

 

01. 파이썬 다운로드 함

02. 스파르타피디아에 ajax 이용해서 영화제목, 이미지, 줄거리, 한줄평, 평점 가져오는거 복습하면서 해봄

 

다른거는 전에 했던거 원리 이용하는 것이여서 할 수 있었는데,

숫자를 let star_image = '☆'.repeat(star) 이렇게 별로 바꿔주는건 할 줄 몰라서 따라했음.

 

개발일지 쓰면서 느낀건데 수업 들었던건데도 엄청 까먹어서 잘 기억이 안 난다. 

파이썬 배우니까 자바스크립트 기억이 잘..

 

처음에 들어가자마자 함수를 시작하는? 로딩하는? 기능을 배웠다. 

$(document).ready(function(){

listing();// 함수 이름

});

 

 

마지막에

$('#card-box).empty()해서 다른 카드들을 넣기전에 다른 카드를 넣어야했는데 이 위치가 헷갈렸음.

나중에 보니까 함수 제일 앞에 넣었던데, 함수 시작할 때 맨 처음에 시작해야하니까 그런것 같다. 

 

03. 파이썬 시작

파이썬을 설치한다는 것을 컴퓨터가 알아들을 수 있는 언어로 번역해주는 번역팩을 설치하는 것

.파일에 들어가서 new project를 클릭하고 위치 venv에 설정하고 기본 인터프리터를 phython38 선택하고

웰컴 스크립트 생성을 하지 않는걸로 선택하고 create

venv에는 기능패키지를 넣는곳이라 건들이지 않고 우리가 생성한 폴더에 새로운 py 파일을 만듦

 

04. 파이썬 기초공부

변수, 기본연산

a = 3    # 3을 a에 넣는다

b = a    # a를 b에 넣는다

a = a + 1    # a+1을 다시 a에 넣는다

num1 = a*b    # a*b의 값을 num1이라는 변수에 넣는다

num2 = 99    # 99의 값을 num2이라는 변수에 넣는다

 

자료형

숫자, 문자형

변수 = 1 //숫자일수도

변수= '문자열' // 문자열 일수도

is_number = True // True 또는 False Boolean 형이 들어갈 수도 있다. 

 

리스트 형(javascript 배열형이랑 동일)

a_list = [] // 대괄호 씀

a_list.append(1) // 리스트에 값을 넣는다 소괄호 씀

a_list.append([2,3])// 리스트에 값을 더 넣는다 

a_list = [1,[2,3]]

a_list[0]// 1  정보 찾을 때 숫자는 대괄호

a_list[1]// [2,3]

a_list[1][0]// 2

 

딕셔너리 형 (javascript랑 같음)

a_dict = {} //중괄호 씀

a_dict = {'name' : 'seon', 'age' : 26}  //콤마 빼먹어서 오류 자주 냄

a_dict ['height'] = 162 // 이런식으로 딕셔너리의 내용을 더 할 수 있다.

 

a_dict 값은? {'name' : 'seon', 'age' : 26, 'height' : 162}

a_dict['name'] //'seon'

 

 

리스트 딕셔너리 조합형 

people = [{'name' : 'seon', 'age' : 26}, {'name' : 'chunky', 'age' : 29} ] // 대괄호 안에 중괄호 딕셔너리

people[0] //'name' : 'seon', 'age' : 26

people[0]['name'] // seon

people[1]['name'] // chunky

 

person= = {'name' : 'namo', 'age' : 2}

people.append(person) // 소괄호 사용

people 값은? [{'name' : 'seon', 'age' : 26}, {'name' : 'chunky', 'age' : 29}, {'name' : 'namo', 'age' : 2} ] 

people[0]['name'] //'namo'


함수 

이름은 마음대로 가능

자바스크립트에서는 function f(x) {

return 2*x+3

}

파이썬에서는 

def f(x):

    return 2*x+3 // 자바스크립트와 달리 중괄호 대신에 콜론을 사용해주고 def를 써줌

 

함수 응용

def sum_all(a,b,c):

return a+b+c

def mul(a,b):

return a*b

result = sum_all(1,2,3) + mul(10,10) //106

 

05. 파이썬 기초공부

조건문

if/ else 로 구성

def oddeven(num):

   if num %2 == 0:

      return True

  else:

    return False

 

result = oddeven(20) // True

 

반복문 (javascript 에서는 (i=0; i < rows.length; i ++;) 이걸로 불러왔었음)

반복문은 리스트의 요소들을 하나씩 꺼내는 형태

즉 무조건 리스트와 함께 쓰인다

fruits = ['사과','배','감','귤']

for fruit in fruits:

  print (fruit)

# 사과, 배, 감, 귤 하나씩 꺼내어 찍힙니다.

 

fruits = ['사과','배','배','감','수박','귤','딸기','사과','배','수박']

count = 0

for fruit in fruits:

if fruit == '사과': // 사과가 맞으면

count += 1 // 1 더해주라

print(count) 

 

06. 파이썬 패키지 설치

파이썬에서 패키지는  모듈 (일종의 기능들 묶음)을 모아놓은 단위임. 

이런 패키지의 묶을을 라이브러리라고 볼 수 있음

외부 라이브러리 사용하기 위해서 여기에서는 패키지를 설치했음

 

파일-> 설정->프로젝트: 이름-> python 인터프리터 ->  + (플러스 표시)

->필요한거 검색해서 찾음 -> 패키지 설치

 

서로 다른 패키지를 쓸 때 걱정 안 해도 됌 

라이브러리를 모아두는 곳이 바로 venv (virtual environment)인데 (공구함 같은거)

이거를 각각 만들어 두고 필요할 때 마다 다른걸 불러오면 됌. (그때 그때  필요한 공구함을 가져와 씀)

 

이 패키지를 사용하는 방법은 검색해서 알아보면 된다. 

 

07. 패키지 사용해보기

미세먼지 one api 로 연습해봄

 

08.  웹스크래핑 (크롤링) 기초

 

bs4 (beautifulsoup)라는 패키지를 다운받아서 사용함

앞부분은 코드스니펫을 그냥 복사해서 붙여넣는다. 기본적인 세팅이 다 되어있다. 

url에 들어가서

영화 랭킹 페이지가 띄운다.

원하는 정보에서 오른쪽 클릭하면 검사라는게 뜨고 거기에 들어가서 그 정보에 해당하는  html을 오른쪽 클릭 복사에 들어가서  selector복사해서 붙어넣기하면 어느내용이 어떻게 들어가져있는지 보여주는게 나온다.

이걸 태그라고 부름

#old_content > table > tbody > tr:nth-child(2) > td.title > div > a 

이런식으로 생김

tr:nth-child(2)이런식으로 생긴부분을 반복문으로 돌려서 다 뽑아준다. 

select() //다 선택

select_one()// 하나 선택

 

09.영화 제목, 순위, 평점 뽑기 연습

 

10. DB 

DB를 쓰는이유는 방정리하는 것과 같다. 잘 찾기 위해서

교보문고에서 책을 찾는 다면 섹션 ->출판사->책제목 순으로 찾는 것 처럼 DB도 index라는 순서로 정렬되어 있음

 

종류 두개

SQL vs NoSQL

SQL // 행열이 있어서 엑셀에 데이터를 저장하는거랑 비슷, 중간에 다른 열을 새로 넣는것은 힘드나 정형화되어 있어 

일관성이 있고 분석에 용이

NoSQL// 디셔너리 형태로 데이터를 저장함. 데이터 하나하나 마다 같은 값을 가질 필요 없게 됌, 자유로운 형태의 데이터에 용이하니 일관성이 부족할 수 있음

 

DB란 프로그램 같은것인데 요즘에는 설치도 안 하고 그냥 Cloud 형태로 제공해주는 곳들이 많다. 

Cloud는 유저가 몰리거나, DB 백업할 때, 모니터링할 때 용이함. 

 

우리도 최신 DB 클라우드 서비스 mongoDB Atlas 이용할 거임. 

11. mongoDB 시작

알려주는 웹페이지가 업뎃이 되었는지 순서가 달라 당황했다. 그리고 생김새도 뭔가 익숙치 않게 생겨서 잘못누르면 다르게 될 것 같아서 이것저것 누르다가 겨우 비슷 한 페이지에 들어가서 그때부터 따라했다. 

organization 만들고,  new project 만들고 build a database해서 공짜인거 선택하고 cluster를 생성하면 된다. 

 

12.DB 연결하기 

그 다음에 connect를 눌러서 IP를 연결하고 username password 설정하고 크리에이트 데이터 유저를 하고 

connect your applicationg 선택

 

파이썬 들어가서 mongoDB쓰기 위한 패키지를 두개 설치, pymongo, dnspython 

파일-> 설정->프로젝트: 이름-> python 인터프리터 ->  + (플러스 표시)

->필요한거 검색해서 찾음 -> 패키지 설치 // 이 순서

 

driver python선택 version 3.6 or later 선택

연결할 때 필요한 코드를 복사함

 

코드스니펫 

from pymongo import MongoClient
client = MongoClient('여기에 URL 입력')
db = client.dbsparta

 

url 부분에 코드 복사한거 넣고 패스워드 넣어줌.

그러면 DB 사용 가능

 

13. pymongo로 DB 조작하기 

db.users.insert_one()  //users라는 콜렉션에 넣어주삼

 

browse collections 들어가면 우리가 넣는 데이터 볼 수 있음

 

# 저장 - 예시
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

 

14. 웹스크래핑 (크롤링)해서 결과 저장하기

 

beautiful soup 이용해서 정보 긁어오고

 

doc= {

'rank' : rank

'title' : title

'star' : star

}

이렇게 딕셔너리 식으로 자료 만들어주고 

db.movies. insert_one(doc) // 이렇게 넣어줌

이러면  movie 라는 파일이 나옴

 

15. 웹스크래핑 

 

가버나움 평점 가져오기

target_movie = db.movies.find_one({'title':'가버나움'}) // 가버나움이라는 제목을 가지고 있는 데이터를 target_movie라는 이름을 주고 가져와라

print(target_movie['star']) // target movie에 있는 데이터 중에 'star'을 가져오고 print 해주라 

 

병점하고 같은 영화 제목 가져오기

target_movie = db.movies.find_one({'title':'가버나움'})

target_star = target_movie['star'] // target_star라는 새 이름을 주었음

 

movies = list(db.movies.find({'star':target_star})) //  target_star와 같은 평점은 가진 movies들 데이터를 가져와라

for movie in movies: print(movie['title']) // 돌려서 movies에 포함되는 movie 데이터를 가져오고 그 중에서  

 

평점 0만들기 = 0이라는 숫자가 문자열이라는 것을 염두에 두고 '' 작은 따옴표 안에 숫자를 넣어서 수정해줘야함

 

16. 숙제

지니 뮤직 사이트에서 순위 제목 가수 스크래핑하기

beautiful soup을 이용해서 

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

for song in songs:
    a = song.select_one('td.info > a.title.ellipsis')
    b = song.select_one('td.info > a.artist.ellipsis')
    c = song.select_one('td.number')
    rank = c.text[0:2]
    title = a.text.strip()
    artist = b.text.strip()

    print(rank, title, artist)

필요한 정보에 가서 검사들어가서  selector 복사 해서 어느 부분까지 반복되는 부분인지 확인하고 반복되는 태그를 soup.select를 써서 달 불러옴

for song in songs: //돌려서 모든 자료 다 가져옴

이 안에서 song.select_one(구별하는 태그) 하고 이름 지어줌

각각 정보에서 text만 뽑아오게 text 붙여주고 [0:2]로 랭킹에 해당하는 앞 2글자만 가져오고 

strip()이용하여 필요없는 띄어쓰기는 다 삭제 함.