파이썬은 매우 직관적인 언어이고, 할 수 있는 것도 많다!
모든 문법을 외우려고 하지말고 필요한 것들은 구글링해서 찾아본다는 생각으로!
- 변수
a = 2
b = 3
print(a+b)
5 // 결과값으로 5가 출력
- 리스트형
a_list = ['사과','배','감']
print(a_list[1])
배 // 결과값으로 배 출력
a_list.append('수박')
print(a_list)
['사과','배','감','수박'] // 결과값으로 수박이 추가되어 출력
- 딕션너리형
a_dict = {
'name':'bob',
'age':27
}
print(a_dict['nama'])
bob // 결과값으로 bob 출력
-함수
def sum(a,b):
return a+b
result = sum(1,2)
print(result)
3 // 결과값으로 3 출력
- 조건문
def is_adult(age):
if age>20:
print('성인입니다')
else:
print(청소년입니다')
is_adult(25)
성인입니다 // 결과값으로 성인입니다 출력값
-반복문
-리스트형
fruits = ['사과','배','배','감','수박','귤','딸기','사과','배','수박']
count = 0
for fruit in fruits:
if fruit == '사과':
count +=1
print(count)
2 // 결과값으로 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'])
carry
ben // 결과값으로 carry, ben 출력
패키지? 라이브러리?
Python 에서 패키지는 모듈(일종의 기능들 묶음)을 모아 놓은 단위입니다.
이런 패키지 의 묶음을 라이브러리 라고 볼 수 있습니다.
지금 여기서는 외부 라이브러리를 사용하기 위해서 패키지를 설치합니다.
즉, 여기서는 패키지 설치 = 외부 라이브러리 설치!
가상 환경(virtual environment)
라이브러리를 모아두는 곳
import requests # requests 라이브러리 설치 필요
r = requests.get('http://spartacodingclub.shop/sparta_api/seoulair')
rjson = r.json()
rows = r.json['RealtimeCityAir']['row']
for row in rows:
gu_name = row['MSRSTE_NM']
gu_mise = row['IDEX_MVL']
title = soup.select_one('#old_content > table > tbody > tr:nth-child(2) > td.title > div > a')
print(title.text)
밥정 // 결과값으로 밥정
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)
// 결과값으로 영화명 쭉나옴
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:
title = a.text
rank = movie.select_one('td:nth-child(1) > img')['alt']
star = movie.select_one('td.point').text
doc = {
'title':title,
'rank':rank,
'star':star
}
db.movies.insert_one(doc)
DB는 나중에 잘 찾아 쓰기 위해서, 순서들이 잘 정렬되있어서 한 번에 잘 뽑아가기위해
결과적으로, 잘 뽑아쓰기 위해서 저장!!
DataBase의 두가지 종류
- SQL
칸을 만들어 두고 채우는 느낌
정형화 되있기 때문에 찾을 때 빨리 찾을 수 있음,
중간에 다른 종류를 넣기는 힘듦- NoSQL(Not only SQL)
정해진 칸이 없고 들어온 대로 쌓는 느낌
유연하게 대처할 수있음
DB는 프로그램!
데이터를 잘 쌓고, 잘 찾아쓸 수 있게 해주는 프로그램~!
클라우드 환경에서 제공해주는 DB프로그램
pymongo 코드 요약!!
# 저장 - 예시
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'})
지니뮤직의 1~50위 곡을 스크래핑 해보세요.
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://www.genie.co.kr/chart/top200?ditc=M&rtm=N&ymd=20210701',headers=headers)
soup = BeautifulSoup(data.text, 'html.parser')
trs = soup.select('#body-content > div.newest-list > div > table > tbody > tr')
for tr in trs:
rank = tr.select_one('td.number').text[0:2].strip()
title = tr.select_one('td.info > a.title.ellipsis').text.strip()
artist = tr.select_one('td.info > a.artist.ellipsis').text
print(rank,title,artist)
이상하게 혼자 할 때는 결과값이 안나왔는데, 답안보고 따라하니까 너무 쉽게 나와서 조금 허탈했다.
혼자서 다시 연습을 해봐야겠다.
💬 파이썬은 처음 다뤄서 그런가 따라가는 속도가 안나오긴 했는데, 더군다나 파이썬, 크롤링, 데이터베이스 다양한 걸 배워서 머리 속에 더 잘 안들어가는 느낌이기도 했다.
그래도 파이썬이 진짜 간단하고 익혀두면 엄청 도움이 될 거 같은!!