본문 바로가기
개발일지/WIL

[WIL] 항해99 웹개발 종합반 3주차

by 깸뽀 2022. 8. 21.
728x90
웹개발 종합반 3주차 강의 회고

3주차에는 파이썬 기본문법을 공부한다

 

항상 많이 쓰고 많이 본 언어가 JAVA 뿐이여서 다른언어를 꼭 공부하고 싶었다

python이 처음 나왔을때 그 인기는 아주... 말모

여전히 많이 각광받는 언어이기도 하고 많은 회사에서 사용하는 언어이기에

더더더 공부해보고 싶었다 !!!!

너무너무 기대중 🤩🤩🤩

 

파이썬문법의 특징은

- 쉽다

- 간결하다

- 직관적이다

- 스크립트언어이다

이 네가지가 가장 큰 장점중의 장점이지 않을까 생각한다

 

기본적인 것들을 기록해보고 다음에도 봐야징 !

 

 

 

🌞 변수, 자료형, 함수, 조건문, 반복문

 

* 파이썬은 괄호가 따로 없기 때문에 들여쓰기가 중요함!

* 주석처리는 #으로

 

1. 변수, 자료형

파이썬은 변수를 정의할 때 변수 앞에 선언방식 (let, var 등)을 적지 않아도 된다

# Num
a1 = 2
b1 = 3
print(a1+b1) # result : 5

# String
a2 = 'BoBo'
b2 = 'Kim'
print(a2+b2)     # result : BoBoKim

# List
a_list = ['사과','배','감']
print(a_list[1])   # result : 배
a_list.append('수박')
print(a_list)    # result : ['사과', '배', '감', '수박']

# Dictionary
a_dict = {
    'name':'Json',
    'age':27
}
print(a_dict['name'])  # result : Json

 

2. 함수

# Dictionary
def sum(a,b):
    print('더하자!')  # 먼저 실행됨
    return a+b

result = sum(1,2)
    print(result)
# result : 더하자!
# 3

 

3. 조건문

# IF
def is_adult(age):
    if age > 20:
        print('성인입니다')
    else:
        print('청소년입니다')

is_adult(25) # result : 성인입니다
is_adult(16) # result : 청소년입니다

 

4. 반복문

# For
fruits = ['사과','자두','배','감','수박','귤','딸기','포도','복숭아','체리']

for fruit in fruits:
    print(fruit) # result : 사과 자두 배 감 수박 귤 딸기 포도 복숭아 체리
fruits = ['사과','자두','배','감','수박','귤','딸기','포도','복숭아','사과']

count = 0
for fruit in fruits:
    if fruit == '사과':
        count += 1

print(count)  # result : 2
people = [{'name': 'bob', 'age': 20},
          {'name': 'carry', 'age': 38},
          {'name': 'john', 'age': 7},
          {'name': 'smith', 'age': 17},
          {'name': 'ben', 'age': 27}]

for person in people:
    if person['age'] > 20:
        print(person['name']) # result : carry ben

 


🌞 패키지 

크롤링을 하려면 남들이 만들어 놓은 라이브러리를 사용해야 하는데 이것을 파이썬에서는 '패키지'라고 부른다

패키지 설치 = 외부 라이브러리 설치

 

🏷️ 주변지식

1. 가상환경(vitual environment = venv) : 라이브러리를 모아두는 곳

2.  pip 사용 - requests 패키기 설치해보기

requests : 일종의 Ajax화 같은 역할을 함

 

1. 패키지 사용해보기

import requests # requests 라이브러리 설치 필요

r = requests.get('http://spartacodingclub.shop/sparta_api/seoulair') # 미세먼지 API
rjson = r.json()

rows = rjson['RealtimeCityAir']['row']

for row in rows:
    gu_name = row['MSRRGN_NM']
    gu_mise = row['IDEX_MVL']
    if gu_mise < 60:
        print(gu_mise)

 

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

- bs4 설치

- BeautifulSoup 사용해보기

 

 ** select_one / select 사용해보기

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)

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

# 코딩 시작
# select_one : 1개였을 때 사용
title =soup.select_one('#old_content > table > tbody > tr:nth-child(2) > td.title > div > a')
print(title) 
# result : <a href="/movie/bi/mi/basic.naver?code=186114" title="밥정">밥정</a>
print(title.text)
# result : 밥정
print(title['href']) 
# result : /movie/bi/mi/basic.naver?code=186114
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)

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

# 코딩 시작
# select : 여러개 사용
#old_content > table > tbody > tr:nth-child(3) > td.title > div > a
#old_content > table > tbody > tr:nth-child(4) > td.title > div > a

movies = soup.select('#old_content > table > tbody > tr')

for movie in movies:
    a = movie.select_one('td.title > div > a')
    if a is not None:
        print(a.text)

 

 


나는 여태껏 회사에서 DB툴을

sqldeveloper(ORACLE) / 제우스 / navicat 을 사용해봤는데 여기는 새로운 툴을 사용해보는것이 아주 흥미롭댜...

쿼리를 막 와다다다 잘짜지는 못하지만.. 아주 재밌다!!!!

 

아직은 SELECT * FROM TABLE 요롷게생긴 문법을 더더더 많이 써왔어서 그런지

아직 익숙하진 않지만 문법 자체는 비슷한거 같아서 그렇게 어렵게 느껴지진 않는다

 

🌞 DB

- SQL / NoSQL

- 몽고DB(클라우드 서비스)

- 패키지 설지 : pymongo, dnspython

 

1. DB연결 / 데이터 insert

- insert (여러개)

- insert_one (하나)

from pymongo import MongoClient
# id, password, connect to 값 넣기
client = MongoClient('mongodb+srv://<id>:<password>@<Connect to>.7bcy2gr.mongodb.net/?retryWrites=true&w=majority')
db = client.dbsparta

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

db.users.insert_one(doc)

# or

db.users.insert_one({'name':'bobby','age':27})
db.users.insert_one({'name':'john','age':20})
db.users.insert_one({'name':'ann','age':20})

 

2. 조회

- find ( 여러개 )

- find_one ( 하나 )

# 모든 데이터 조회
all_users = list(db.users.find({},{'_id':False}))
for user in all_users:
    print(user)

# 하나만 조회
user = db.users.find_one({'name':'bobby'})
print(user)

 

3. 수정

- update (여러개)

- update_one (하나)

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

 

4. 삭제

- delete_one (하나)

db.users.delete_one({'name':'bobby'})

5. 기타

 - 파이썬에서 문자열을 다룰 때 공백제거하는 방법 3가지

     1. strip(), lstrip(), rstrip() 사용 - 양쪽, 왼쪽, 오른쪽 공백 제거
     2.re.sub() 사용 - 정규표현식 사용으로 원하는대로 공백 제거

 

개인적으로 너무너무 유익하고 재밌었던 시간 !

몽고디비 많이 들어봤는데 3주차 수업때 사용해볼 수 있어서 재밌었습니댜~

 

4주차도 넘넘 기대되는구만! 

 

728x90

댓글