10.18. MiniCamp_WEB_3WEEK

5w31892p·2022년 10월 18일
0

미니캠프

목록 보기
10/17

나홀로메모장 OpneAPI 붙여보기

$(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);
      }
    }
  })
}

Python

  1. 매우 직관적인 언어

  2. 기초문법
    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}
  3. 모든 구의 미세먼지 값

    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'])
  4. 미세먼지 값 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'])
  5. 크롤링 기본코드
    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')
    
    #############################
    # (입맛에 맞게 코딩)
    #############################
  6. 영화 순위, 제목, 평점 가져오기

    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)
  7. pymongo 기본코드

    from pymongo import MongoClient # pymongo 임포트
    client = MongoClient('localhost', 27017) # mongoDB는 27017 포트로 돌아감
    db = client.dbsparta # 'dbsparta'라는 db 만듦
    
    # 코딩 시작
  8. 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'})
  9. insert

    doc = {
        'rank': rank,
        'title' : title,
        'star' : star
    }
    db.movie2.insert_one(doc)
  10. 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)}})
  11. 지니뮤직 순위, 제목, 가수 스크래핑

    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)

0개의 댓글