모든 프로그래밍 언어에는 변수, 자료형, 함수, 조건문, 반목문 5가지를 기억해야한다.
파이썬은 들여쓰기 중요!
a = 1
b = 2
print(a + b) ---> 결과로 3이 나온다.
javascript와 달리 let을 쓸 필요가 없다. (let a = 3)
List형
a_list = ['사과','배','감']
a_list.append('수박') ---> a_list에 수박을 추가
a_list[2] ---> 감
a_list.append(['딸기','수박']) ---> a_list = ['사과','배','감',['딸기','수박']]이 된다.
여기서, a_list[3][0]은 딸기이다.
a_dict = {'name':'bob','age':'25'}
a_dict['height'] = 170 --->로 a_dict에 'height':'170' 추가
a_dict['name'] ---> 'bob'
List형과 Dictionary형의 조합
people = [{'name':'bob','age':'25'},{'name':'kyle','age':'30'}]
people[1]['name'] ---> 'kyle'
person = {'name':'joon','age':'15'}
people.append(person) ---->[{'name':'bob','age':'25'},{'name':'kyle','age':'30'},{'name':'joon','age':'15'}]
def 함수이름(a,b,c):
return a+b+c
result = 함수이름(1,2,3) ---> 6
(javascript는 function 함수이름(a,b,c){return a+b+c}였다.)
def is_adult(age):
if age > 20:
print('성인')
else:
print('청소년')
is_adult(21) ---> 성인
fruits = ['사과','배','감']
for fruit in fruits:
print(fruit) ---> 사과 배 감이 하나씩 찍힌다.
fruits = ['사과','배','감','배']
count = 0
for fruit in fruits:
if fruit == '배':
count += 1
print(count) ---> 2(개수를 알 수 있다.)
가상환경(virtual environment) : 라이브러리를 모아두는 곳 (venv폴더)
requests 패키지를 설치한다. Ajax 역할을 해준다고 한다.
import requests
r = requests.get('url')
rjson = r.json() 를 추가하여 사용한다.
ex)
import requests # requests 라이브러리 설치 필요
r = requests.get('http://spartacodingclub.shop/sparta_api/seoulair')
rjson = r.json()
rows = rjson['RealtimeCityAir']['row']
for row in rows:
print(row['MSRSTE_NM'],row['IDEX_MVL'])
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('url',headers=headers)
soup = BeautifulSoup(data.text, 'html.parser')를 추가하여 사용한다.
soup.select나 soup.select_one을 이용하여 필요한 것을 가져온다.
가져올 정보를 검사-복사-selector 복사로 가져와서 앞부분의 공통인 부분을 가져온다.
(1. #body-content > div.newest-list > div > table > tbody > tr:nth-child(1) > td.info > a.title.ellipsis
2. #body-content > div.newest-list > div > table > tbody > tr:nth-child(2) > td.info > a.title.ellipsis
일 경우 #body-content > div.newest-list > div > table > tbody > tr가 공통)
trs = soup.select('여기 넣는다')
다음에는 반복문을 돌린다.
for tr in trs:
title = component.select_one('뒷부분을 복사해온다.').text.strip()
rank = component.select_one('td.number').text[0:2].strip()
artist = component.select_one('td.info > a.artist.ellipsis').text
print(rank,title,artist)
를 통해 원하는 정보를 가져온다.
여기서 .text는 문자만을 가져오고, [0:2]로 앞의 두 글자만 끊어오거나, .strip()으로 빈공간을 삭제할 수 있다.
DB를 사용하는 이유 : 정보를 잘 찾아오기 위해서
DB에는 Index라는 순서로 데이터들이 정렬되어있다.
DB는 우리가 쓰는 프로그램과 같은 것이다.
그 중 mongoDB Atlas를 이용하여 배우는 것.
pymongo와 dnspython 패키지를 설치한다.
from pymongo import MongoClient
client = MongoClient('mongodb+srv://아이디:비밀번호@cluster0.6mof6.mongodb.net/Cluster0?retryWrites=true&w=majority')
db = client.폴더이름 --->를 추가하여 사용한다.
저장 - 예시
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'})
웹개발 종합반을 들으면서 처음으로 머리에 잘 안들어온다는 느낌을 받았다. 강의를 보고 따라하면서 왜 이렇게 코드를 짜고, 작동이 되는지 이해를 하면서 들어야 습득이 빠를거 같은데 시키는대로만 하니까 받아들이기 어렵다고 느끼는 것 같다. 마침 파이썬 문법 뽀개기 강의를 수강할 수 있어서 3주차 예제들과 숙제들을 반복 학습하면서 파이썬 문법 뽀개기 강의를 함께 들어야겠다.