IT/개발

웹 개발 3주차 개발일지 (1/3~1/9)

멍치킨 2022. 1. 13. 19:45

듣기까지 고난했던 3주차...

몽고DB 설치때매 애먹었다..

 

3주차

Python, 크롤링, mongoDB에 대해서 배웠다.

 

크롤링 - 파이썬으로 웹에 있는 데이터들을 긁어올 수 있음

mongoDB - 저장 (데이터베이스)

 

Python 시작하기

파이썬을 설치한다? → 일종의 번역팩을 설치한다고 생각하면 됩니다. 컴퓨터는 101010001 과 같은 언어만 알아듣는다고 했지요? 파이썬 문법으로 된 것을 101010001로 변환해줄 수 있도록, 번역 패키지를 설치하는 것입니다.

 

파이참에 파일 왜안뜸. 검색해서 New Project… 킴 → 맥린이라 모니터 맨 위에 뜨는지 몰랐음.. idiot

맥린이 조련

확인할 거 3가지

  1. 로케이션 pythonprac 
  2. 밑에 로케이션 venv 확인
  3. 파이참 3.8 버전, 맨 밑에 create a main.py welcome script 체크 해제

Vent library root폴더는 안 보이는 폴더라고 생각하기(건들지 말 것)

실행시킬 때는무조건 마우스오른쪽 클릭하고Run 눌러야 함 → 나는 control+shift+R키 눌러서 함

 

Python 기초공부

에러 보는 꿀팁💡맨 마지막 줄만 읽기(에러에 대한 설명), 그다음에 하나 더 전거 읽기(에러가 이렇게 났다)

파이썬에서는 문자하고 숫자하고 더하면 에러가 난다

Num = str(2) 문자열로 만들어줌 곧 ‘2’ 랑 같음

a_dict = {'name':'bob','age':27 }

 

print(a_dict['name'])

 

a_dict = {'name':'bob','age':27 }

 

a_dict['height'] = 178

 

print(a_dict)

 

def sum(num1,num2):

    print('안녕!')

    return num1+num2

 

result = sum(2,3)

 

print(result)

 

count = count + 1

Count += 1

하나 올려줘 . 둘다 같음

 

변수 & 기본 연산

a = 3       # 3을 a에 넣는다

b = a       # a를 b에 넣는다

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

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

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

 

# 변수의 이름은 마음대로 지을 수 있음!

 

자료형

숫자, 문자형

name = 'bob'       # 변수에는 문자열이 들어갈 수도 있고,

num = 12      # 숫자가 들어갈 수도 있고,

is_number = True       # True 또는 False -> "Boolean"형이 들어갈 수도 있습니다.

 

 

리스트 형 (Javascript의 배열형과 동일)

a_list = []

a_list.append(1)       # 리스트에 값을 넣는다

a_list.append([2,3])       # 리스트에 [2,3]이라는 리스트를 다시 넣는다

 

# a_list의 값은? [1,[2,3]]

# a_list[0]의 값은? 1

# a_list[1]의 값은? [2,3]

# a_list[1][0]의 값은? 2

 

Dictionary 형 (Javascript의 dictionary형과 동일)

a_dict = {}

a_dict = {'name':'bob','age':21}

a_dict['height'] = 178

 

# a_dict의 값은? {'name':'bob','age':21, 'height':178}

# a_dict['name']의 값은? 'bob'

# a_dict['age']의 값은? 21

# a_dict['height']의 값은? 178

 

Dictionary형과 List형의 조합

people = [{'name':'bob','age':20},{'name':'carry','age':38}]

# people[0]['name']의 값은? 'bob'

# people[1]['name']의 값은? 'carry'

 

person = {'name':'john','age':7}

people.append(person)

# people의 값은? [{'name':'bob','age':20},{'name':'carry','age':38},{'name':'john','age':7}]

# people[2]['name']의 값은? 'john'

 

함수

함수의 정의 - 이름 맘대루 정할 수 있음

# 수학 문제에서 f(x) = 2*x+3

y = f(2)

y의 값은? 7

 

# 참고: 자바스크립트에서는

function f(x) {

    return 2*x+3

}

 

# 파이썬에서

def f(x):

    return 2*x+3

 

y = f(2)

y의 값은? 7

 

함수의 응용

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)

 

조건문

if / else로 구성

def oddeven(num): # oddeven이라는 이름의 함수를 정의한다. num을 변수로 받는다.

    if num % 2 == 0: # num을 2로 나눈 나머지가 0이면

       return True # True (참)을 반환한다.

else: # 아니면,

     return False # False (거짓)을 반환한다.

 

result = oddeven(20)

 

-----

 

def is_adult(age):

     if age > 20:

       print('성인입니다') # 조건이 참이면 성인입니다를 출력

     else:

         print('청소년이에요') # 조건이 거짓이면 청소년이에요를 출력

 

is_adult(30)

반복문

 

 

파이썬 패키지 설치하기

가상 환경(virtual environment) = venv

PyCharm > Preference

Project: pythonprac > Python Interpreter에서 플러스 누르기

Requests라고 Install Package 누르면 requests를 갖고옴

 

 

웹 스크래핑(크롤링)

퍼가요

구글에 python requests 패키지라고 치면 많이 나옴 따라하셈

PyCharm > Preference

Project: pythonprac > Python Interpreter에서 플러스 누르기

Bs4라고 검색 후 Install Package 누름

이미 받아온 가지고 솎아내는게 크롤링이라함

—————————

크롤링 기본 세팅

import requests

from bs4 import BeautifulSoup

 

# 타겟 URL을 읽어서 HTML를 받아오고

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)

 

# HTML을 BeautifulSoup이라는 라이브러리를 활용해 검색하기 용이한 상태로 만듦

# soup이라는 변수에 "파싱 용이해진 html"이 담긴 상태가 됨

# 이제 코딩을 통해 필요한 부분을 추출하면 된다.

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

 

# 코딩 시작

기술적으로 중요한 2가지

  1. 요청을 하는 거 (코드단에서 브라우저를 켜지 않고.) - requests로 함
  2. 요청돼서 가지고 온 html들 중에 내가 원하는 정보를 잘 솎아내는 거 - beautifulsoup

print(title.text) - 텍스트 가져올 때

print(title['href']) - 태그의 속성 가져올때

 

  1. 원하는 부분에서 마우스 오른쪽 클릭 → 검사
  2. 원하는 태그에서 마우스 오른쪽 클릭
  3. Copy → Copy selector로 선택자를 복사할 수 있음

웹 스크래핑(크롤링)연습

 

 

mongoDB라는 프로그램은 눈으로 보이지 않음.

유식한 말로, 그래픽인터페이스(=GUI)를 제공하지 않는다고 표현함

Robo 3T MongoDB 데이터를 보려고 쓰는 거다

 

데이터베이스를 쓰는 이유 - 데이터를 잘 갖다 쓰려고

SQL 엑셀에 조금 더 가깝다 (MySQL), 열과 행을 미리 정해놔야 한다, 중간에 바꾸기가 불편함 but 정형화된 데이터를 뽑아가는 방식은 최적화가 많이 되어짐. 데이터가 일관적.

NoSQL - not only SQL의 약자 (mongoDB)

한줄한줄이 딕셔너리 형태로 들어감

 

 

pymongo DB 조작하기

파이몽고 기본 코드

from pymongo import MongoClient

client = MongoClient('localhost', 27017)

db = client.dbsparta

 

# 코딩 시작

  1. Insert 넣는 거
  2. Find 찾는 거
  3. Update 
  4. Delete

mongoDB는 그냥 딕셔너리가 쌓이는 거

db.users.insert_one(doc) - db안에 users라는 collection 안에 insert 해라

 

same_ages = list(db.users.find({'age':21}, {'_id':False})) - id는 나타내지 말아라

print(same_ages)

 

same_ages = list(db.users.find({})) - 조건 없이 모든 document find 해라 ( 중괄호)

 

db.users.update_one({'name':'bobby'},{'$set':{'age':19}})

19살로 바꿔라

update_many - name bobby 애를 모두 찾아서 age 19 바꿔라

 

 

웹 스크래핑결과 저장하기

 

웹 스크래핑결과 이용하기

“9.39” 문자열 처럼 하려면 {'star’:’0’} 작은따옴표 쓰기

 

1~50위의 곡 스크래핑

 

파이썬 공백 제거 - .strip()

파이썬 문자열 자르기 - [0:5]