$(document).ready(function () {
q1();
});
function q1() {
$.ajax({
type: "GET",
url: "http://spartacodingclub.shop/post",
data: {},
success: function (response) {
let cards = response['articles'];
for (let i = 0; i < cards.length; i++) {
let title = cards[i]['title'];
let url = cards[i]['url'];
let image = cards[i]['image'];
let desc = cards[i]['desc'];
let comment = cards[i]['comment'];
let temp_html = `<div class="card">
<img class="card-img-top"
src="${image}"
alt="Card image cap">
<div class="card-body">
<a href="${url}" class="card-title">${title}</a>
<p class="card-text">${desc}</p>
<p class="card-text comment">${comment}</p>
</div>`
$('#cards-box').append(temp_html);
}
}
})
}
매우 직관적인 언어
기초문법
1) 변수 & 기본연산
→ 변수의 이름은 그럴싸하게 마음대로
2) 자료형
→ 숫자형, 문자형
→ 리스트형
odd = [1,2,3,4]
odd.append(5)
odd = [1,2,3,4,5]
→ 딕셔너리형
dic = {'name':'pey', 'age': 30}
dic['height'] = 180
dic = {'name':'pey', 'age': 30, 'height':180}
→ 리스트+딕셔너리조합
people = [{'name':'bob','age':20},{'name':'carry','age':38}]
→ 튜플형
tu = (1, 2, ('a', 'b'))
3) 함수
def add(a,b):
return a+b
result add(1,2)
3
4) 조건문
age = 25
if age > 20:
print('성인')
else:
print('청소년')
5) 반복문
#리스트
fruits = ['사과','배','배','감','수박','귤','딸기','사과','배','수박']
count = 0
for ff in fruits:
if ff == '수박':
count += 1
print(count)
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:
print(person['name'], person['age'])
bob 20
carry 38
john 7
smith 17
ben 27
또는
for person in people:
if person['age'] < 20:
print(person)
{'name': 'john', 'age': 7}
{'name': 'smith', 'age': 17}
모든 구의 미세먼지 값
import requests # 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:
print(gu['MSRSTE_NM'], gu['IDEX_MVL'])
미세먼지 값 60 미만인 구
import requests # 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:
if gu['IDEX_MVL'] < 60:
print(gu['MSRSTE_NM'], gu['IDEX_MVL'])
크롤링 기본코드
1) copy selector 이용
import requests
from bs4 import BeautifulSoup
# 타겟 URL을 읽어서 HTML를 받아오고,
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('크롤링 할 링크',headers=headers)
# HTML을 BeautifulSoup이라는 라이브러리를 활용해 검색하기 용이한 상태로 만듦
# soup이라는 변수에 "파싱 용이해진 html"이 담긴 상태가 됨
# 이제 코딩을 통해 필요한 부분을 추출하면 된다.
soup = BeautifulSoup(data.text, 'html.parser')
#############################
# (입맛에 맞게 코딩)
#############################
영화 순위, 제목, 평점 가져오기
import requests
from bs4 import BeautifulSoup
# 타겟 URL을 읽어서 HTML를 받아오고,
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)
# HTML을 BeautifulSoup이라는 라이브러리를 활용해 검색하기 용이한 상태로 만듦
# soup이라는 변수에 "파싱 용이해진 html"이 담긴 상태가 됨
# 이제 코딩을 통해 필요한 부분을 추출하면 된다.
soup = BeautifulSoup(data.text, 'html.parser')
trs = soup.select('#old_content > table > tbody > tr')
for tr in trs:
a_tag = tr.select_one('td.title > div > a')
if a_tag is not None:
rank = tr.select_one('td:nth-child(1) > img')['alt']
title = a_tag.text
star = tr.select_one('td.point').text
print(rank, title, star)
pymongo 기본코드
from pymongo import MongoClient # pymongo 임포트
client = MongoClient('localhost', 27017) # mongoDB는 27017 포트로 돌아감
db = client.dbsparta # 'dbsparta'라는 db 만듦
# 코딩 시작
pymongo 코드 요약
1) 저장하고, 찾고, 바꾸고, 지우고
# 저장 - 예시
doc = {'name':'bobby','age':21}
db.users.insert_one(doc)
# 한 개 찾기 - 예시
user = db.users.find_one({'name':'bobby'})
# 여러개 찾기 - 예시 ( _id 값은 제외하고 출력)
same_ages = list(db.users.find({'age':21},{'_id':False}))
# 바꾸기 - 예시
db.users.update_one({'name':'bobby'},{'$set':{'age':19}})
# 지우기 - 예시
db.users.delete_one({'name':'bobby'})
insert
doc = {
'rank': rank,
'title' : title,
'star' : star
}
db.movie2.insert_one(doc)
find_one, find, update_one
#find_one - 매트릭스 평점 가져오기
movie = db.movie2.find_one({'title':'매트릭스'})
print(movie['star'])
#find - 매트릭스 평점과 같은 평점의 영화 제목들 가져오기
movie = db.movie2.find_one({'title':'매트릭스'})
star = movie['star']
movies = list(db.movie2.find({'star':star},{'_id':False}))
for moviess in movies:
print(moviess['title'])
# update_one - 매트릭스 평점 0으로 만들기
db.movie2.update_one({'title':'매트릭스'},{'$set':{'star': str(0)}})
지니뮤직 순위, 제목, 가수 스크래핑
import requests
from bs4 import BeautifulSoup
# 타겟 URL을 읽어서 HTML를 받아오고,
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&rtm=N',headers=headers)
# HTML을 BeautifulSoup이라는 라이브러리를 활용해 검색하기 용이한 상태로 만듦
# soup이라는 변수에 "파싱 용이해진 html"이 담긴 상태가 됨
# 이제 코딩을 통해 필요한 부분을 추출하면 된다.
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[:3].strip()
title = tr.select_one('td.info > a.title.ellipsis').text.strip()
singer = tr.select_one('td.info > a.artist.ellipsis').text
print(rank,title,singer)