$(document).ready(function () {
// code
})
자동으로 로딩해주는 코드
fetch("http://spartacodingclub.shop/web/api/movie").then(res => res.json()).then(data => {
let rows = data['movies']
rows.forEach((a)=>{
let desc = a['desc']
let comment = a['comment']
let star = a['star']
let image = a['image']
let star_imamge = '⭐'.repeat(star)
let temp_html = `<div class="col">
<div class="card h-100">
<img src="${image}"
class="card-img-top">
<div class="card-body">
<h5 class="card-title">${title}</h5>
<p class="card-text">${desc}</p>
<p>${star_image}</p>
<p class="mycomment">${comment}</p>
</div>
</div>
</div>`
$('#cards-box').append(temp_html)
})
})
맥 터미널에서 특정 파이썬 실행하는 법
python "해당파일".py
프로젝트를 하다보면 모듈 설치를 하게 되는데 종종 모듈끼리 충돌 하는 경향이 있어 디렉토리 만들듯이 환경을 분리해서 프로젝트를 진행하는것이 고생을 덜 하게 된다...
파이썬은 일반적으로 pip를 이용하여 모듈을 설치를 합니다. 이는 node.js의 npm과 유사하지만, 중요한 차이점이 있습니다.
npm은 자동으로 로컬 환경에 모듈을 설치하지만, pip는 글로벌 환경에 설치한다는 점입니다. 이 때문에, 별도로 가상환경이라는 개념을 적용하게 된 것입니다
python3 -m venv venv(가상환경 이름)
source venv/bin/activate
deactivate
쉽게 설명해서 venv 가상환경에 접속을 하게 된 상황에선 라이브러리를 venv 폴더(가상환경)에 깐다고 생각하면 이해하기 쉽습니다.
pip install requests
2주차에 배웠던 JS의 Fetch 역할이랑 동일하다.
한마디로 request는 서버에서 데이터를 가져와서 볼수 있다.
import requests
r = requests.get('http://spartacodingclub.shop/sparta_api/seoulair')
rjson = r.json()
rows = rjson['RealtimeCityAir']['row']
for a in rows:
gu_name = a['MSRSTE_NM']
gu_mise = a['IDEX_MVL']
print(gu_name,gu_mise)
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')
a = soup.select_one('#old_content > table > tbody > tr:nth-child(3) > td.title > div > a')
print(a.text) -> 그린북
print(a['href']) -> /movie/bi/mi/basic.naver?code=171539
a = soup.select_one('#old_content > table > tbody > tr:nth-child(3) > td.title > div > a')
크롬에 가서 원하는 데이터 오른쪽 클릭후 검사 -> Copy -> Copy selector
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')
trs = soup.select('#old_content > table > tbody > tr')
cnt = 0
for tr in trs:
a = tr.select_one('td.title > div > a')
if a is not None:
title = a.text
point = tr.select_one('td.point').text
rank = tr.select_one('img')['alt']
print(rank,title,point)
DB 쓰는 이유
나중에 잘 찾기 위해서
행/열의 생김새가 정해진 엑셀에 데이터를 저장하는 것과 유사합니다. 데이터 50만 개가 적재된 상태에서, 갑자기 중간에 열을 하나 더하기는 어려울 것입니다. 그러나 정형화되어 있는 만큼, 데이터의 일관성이나 / 분석에 용이할 수 있습니다.
장점: 틀이 이미 다 정해져 있기 떄문에 사람이 실수할 일이 적다
그래서 주로 대기업같은 큰 비즈니스가 잘 안 바뀌는 곳에서 사용
딕셔너리 형태로 데이터를 저장해두는 DB입니다. 고로 데이터 하나 하나 마다 같은 값들을 가질 필요가 없게 됩니다. 자유로운 형태의 데이터 적재에 유리한 대신, 일관성이 부족할 수 있습니다.
장점: 비즈니스의 유연성을 굉장히 크게 담보합니다.(스타트업)
요즘은 로컬DB보단 클라우드 환경에 올려 놓는다.
유저가 몰리거나 / DB를 백업해야 하거나 / 모니터링 하기가 용이하기 때문.
pip install dnspython
pip install pymongo
from pymongo import MongoClient
client = MongoClient('mongodb+srv://sparta:test@cluster0.ysqkjuw.mongodb.net/?retryWrites=true&w=majority')
db = client.dbsparta
doc = {
'name': 'Thomas',
'age': 31
}
db.users.insert_one(doc)
MongoClient('여기 나오는 코드는 Mongo DB 홈페이지에서 프로젝트 생성후 발급 받는 법은 인터넷 참고!!')
코드 작성후 python3 dbprac.p 실행 했는데 에러가 나온다...
"raise OperationFailure(errmsg, code, response, max_wire_version)
pymongo.errors.OperationFailure: bad auth : authentication failed, full error: {'ok': 0, 'errmsg': 'bad auth : authentication failed', 'code': 8000, 'codeName': 'AtlasError'}"
authentication 이라는 말에 비번을 잘못 쳤구나 했는데
<password>
-> test 라고 쳐야할거 <test>
라고 쳐서 안 된줄 알고 고쳐도 안된다... 오랜 삽질 끝에 그냥 다시 새로 만들고 하니깐 성공...
# 저장 - 예시
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'})
위에 코드를 사용하기 전에 'Pymongo 기본 세팅'작성 후 MongoDB 데이터를 조회,저장,수정,삭제를 할수 있다.
movie = db.movies.find_one({'title' : "가버나움"},{'_id': False})
print(movie['point'])
movie = db.movies.find_one({'title' : "가버나움"},{'_id': False})
target = movie['point']
all_movie = list(db.movies.find({'point' : target},{'_id':False}))
for a in all_movie:
print(a['title'])
db.movies.update_one({'title':'가버나움'},{'$set':{'point':0}}) // 평점을 0으로 만들기
movie = db.movies.find_one({'title':'가버나움'},{'_id': False}) // DB에 가서 보기 귀찮으니 그냥 조회해줌
print(movie)