티스토리 뷰

카드 메모장 응용

$(document).ready(function () {
$('#cards-box').empty() 로딩과 동시에 값 받아오기
listing();
});

function listing() {

$.ajax({
type: "GET",
url: "http://spartacodingclub.shop/post",
data: {},
success: function (response) {

let rows = response['articles']
for (let i = 0; i < rows.length; i++) {
let comment = rows[i]['comment'입력값 이름 정하기
let desc = rows[i]['desc']
let image = rows[i]['image']
let title = rows[i]['title']
let url = rows[i]['url']

let temp_html = `<div class="card">
<img class="card-img-top" src="${image}기존 카드 포맷에 영화 후기 API의 ${입력값} 입력
alt="Card image cap">
<div class="card-body">
<a href="${url}" class="card-title"> ${title} </a>
<p class="card-text">${desc}</p>
<h5 class="comment">${comment}</h5>
</div>
</div>`
$('#cards-box').append(temp_html)

}
}
})
}

 

파이썬

함수 만들기

def sum(num1,num2):
return num1+num2

result = sum(2,3)
print(result) sum은 꼭 sum일 필요 없음. 원하는 대로 정의

조건문

age = 25 

if age > 20 :

print('성인입니다')
else:
print('청소년입니다') 또는

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

is_adult(25)

반복문

fruits = ['사과','','','','수박','','딸기','사과','','수박']

count = 0
for ff in fruits: ff는 fruits 리스트의 값을 지칭(다르게 정의해도 됨)

   if ff == '':
      count += 1
print(count)

패키지 사용하기

import requests 

r = requests.get('http://openapi.seoul.go.kr:8088/6d4d776b466c656533356a4b4b5872/json/RealtimeCityAir/1/99')
rjson = r.json() 외우려고 하지 말 것!

gus = rjson['RealtimeCityAir']['row'] 임의의 이름

for gu in gus:
gu_name = gu['MSRSTE_NM'RealtimeCityAir에 포함된 '구'들 중 '구'의 '이름'의 값을 정의
gu_mise = gu['IDEX_MVL'] RealtimeCityAir에 포함된 '구'들 중 '구'의 '미세먼지 수치'의 값을 정의
if(gu_mise > 60) :
print(gu_name,gu_mise) '구'들 중 '미세먼지 수치'가 60  초과면 '이름', '미세먼지 수치' 표시

패키지 사용하기

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.nhn?sel=pnt&date=20200303',headers=headers)

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


title = soup.select_one('#old_content > table > tbody > tr:nth-child(2) > td.title > div > a'갖고 오고 싶은 데이터 우클릭 →복사→Copy Selector

print(title.text) 태그의 텍스트만 갖고오기

print(title['href']) 태그의 속성만 갖고오기

 

네이버 영화랭킹 API

trs = soup.select('#old_content > table > tbody > tr') 한 줄씩 Copy Selector 했을 때 공통되는 부분

for tr in trs: trs 중에 tr이란:
a_tag = tr.select_one('td.title > div > a') 타이틀
if a_tag is not None중간의 구분선 등 값이 None인 값 제외
title = a_tag.text 타이틀에서 텍스트만 뽑아냄 (안 그러면 <a href="/movie/bi/mi/basic.nhn?code=37886" title="클레멘타인">클레멘타인</a> 식으로 나옴)
rank = tr.select_one('td:nth-child(1) > img')['alt'] 랭킹, rank는 a_tag(타이틀)가 아니라 tr에서 뽑아야 함 (copy selector 시 #old_content > table > tbody > tr:nth-child(2) > td:nth-child(1) > img 로 나옴, 그 중 alt 값(순위))


star = tr.select_one('td.point').text 평점, 위와 동일

 

데이터베이스(몽고DB): 데이터를 쉽게 찾아 쓰기 위함.

RDBMS(SQL) vs NoSQL

SQL:

형식이 정형화되어 있어(열, 행을 미리 정해놔야 함) 데이터의 일관성이나 분석에 용이 (ex. My-SQL, MS-SQL, Oracle)NoSQL: dictionary 형태로 데이터 저장하여 데이터 형식을 통일할 필요가 없음. 데이터 적재가 유연하고 자유로운 대신 일관성 부족 (ex. MongoDB)

 

#insert

doc = {'name':'jane','age':21}
db.users.insert_one(doc)  db 안의 users 콜렉션에 추가됨

#find

같은 나이의 사람 찾기

same_ages = list(db.users.find({'age':21},{'_id':False})) 상단의 _id값 제외

print (same_ages) 

또는 for person in same_ages:
print(person)

'매트릭스'와 평점이 같은 영화 찾기

movie = db.movies.find_one({'title':'매트릭스'}) movies DB
target_star = movie['star']
target_movies = list(db.movies.find({'star':target_star},{'_id':False}))

for target in target_movies:
print(target['title'])

조건 주지 않고 찾기 (전체 리스트 나열)
same_ages = list(db.users.find({},{'_id':False}))

하나만 찾기
user = db.users.find_one({'name':'bobby'},{'_id':False}) 
print(user) 이름이 bobby인 값이 여러 개라도 가장 상단의 값만 가져 옴

print(user['age']) 이름이 bobby인 값의 나이 

#update

db.users.update_one({'name':'bobby'},{'$set':{'age':19}}) 값이 같은 항목을 다 바꿀 땐 update_many

#delete

db.users.delete_one({'name':'bobby'}) delete_many도 있음

 

지니뮤직 크롤링

import requests
from bs4 import BeautifulSoup

from pymongo import MongoClient
client = MongoClient('localhost', 27017)
db = client.dbsparta

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=D&ymd=20200403&hh=23&rtm=N&pg=1',headers=headers)

soup = BeautifulSoup(data.text, 'html.parser'import 위해 필요
#body-content > div.newest-list > div > table > tbody > tr:nth-child(4) 지니뮤직 차트 코드
trs = soup.select('#body-content > div.newest-list > div > table > tbody > tr')

for tr in trs:
   title = tr.select_one('td.info > a.title.ellipsis').text.strip() strip()은 공백 제거
   rank = tr.select_one('td.number').text[0:2].strip()
   artist = tr.select_one('td.info > a.artist.ellipsis').text
print(rank, title, artist)




반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크