明日学习団11日制作チャレンジ初日


1日目(mongodyからWeb scripting&ジョブ/プロジェクト1日目)

[1日目]プロジェクトテーマを選択し、役割を割り当てます

  • テーマ選定:ゲーム別おすすめサイト
  • API使用:https://www.freetogame.com/api-doc
  • キャスト:フロントエンド(2)、バックエンド(2)、フロントエンドとバックエンド(2)
  • [1]mongodbとRobo 3 Tのキャラクター

  • mongody:データベース、グラフィックインターフェースを提供しない(=GUI)
  • Robo 3 T:mongodbの内部確認.
  • [2]データベースのタイプ

  • SQL
    :行と列で特定されたセルにデータを格納するように、エントリを事前に特定するデータベース.
    それは固定的で、データは一致していて、分析しやすいです.
    したがって,中間でフレームを変えることは難しく,変化に対して効率的ではない.
  • (ex) MS-SQL, My-SQL, Oracle ...
  • NoSQL ( Not only SQL )
    :データをバイナリ形式で格納するデータベース.
    各データには異なる値があります.
    自由な形態であるため、変化は容易であるが、一貫性に欠けている.
  • (ex) mongoDB ...

    [3] Pymongo

  • Pymongo:Pythonでmongodbを操作するためのライブラリ.
  • ドライバ用の基本コード
    from pymongo import MongoClient          
    			#pymongo를 임포트 하기
    client = MongoClient('localhost', 27017)      
    			#mongoDB는 27017 포트로 구동
    db = client.dbsparta						
    			#'dbsparta'라는 이름의 데이터베이스 추가
  • Pymongoは、mongodb内のデータの格納、取得、変更、削除を許可する.
  • [例]
    doc = {'name':'bobby','age':21}		
    			# 이 데이터 하나를
    db.users.insert_one(doc)			
    			# 데이터베이스의 users에 저장한다.
         
    user = db.users.find_one({'name':'bobby'})
    			# users에서 이 값을 가진 데이터를 찾는다.
    same_ages = list(db.users.find({'age':21},{'_id':False}))
    			# users에서 이 값을 가진 데이터들을 리스트로 만든다.
         
    db.users.update_one({'name':'bobby'},{'$set':{'age':19}})
    			# users에 name:bobby인 데이터의 age를 19로 수정한다.
         
    db.users.delete_one({'name':'bobby'})
    			# users의 데이터 중 이 값을 가진 데이터를 지운다.

    [4]Quiz Webクリップ結果の使用


    クリップNAVER映画採点、
  • Q 1映画番組「マトリックス」採点
  • 第2四半期に『マトリックス』と同じ評価を受けた映画名
  • Q 3マトリックス映画採点0
  • 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://movie.naver.com/movie/sdb/rank/rmovie.nhn?sel=pnt&date=20200303',headers=headers)
    
    soup = BeautifulSoup(data.text, 'html.parser')
    
    trs = soup.select('#old_content > table > tbody > tr')
    
    
    for tr in trs:
        tag = tr.select_one('td.title > div > a')
    
    user = db.movies.find_one({'title':'매트릭스'},{'_id':False})
    
    same = user['star']
    
    #quiz1
    
    print(same)
    
    #quiz2
    
    users = list(db.movies.find({'star':same},{'_id':False}))
    
    for us in users :
        print(us['title'])
    
    #quiz3
    
    #db.movies.update_one({'title':'매트릭스'},{'$set':{'star':'0'}})

    結果:

  • Q1
  • Q2
  • Q3
  • [5]作業>ジェニーミュージック上位1~50名をクリップする

    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')
    
    geni = soup.select('#body-content > div.newest-list > div > table > tbody > tr')
    
    for songs in geni:
        song = songs.select_one('td.info > a.title.ellipsis').text
        title = song.strip()
        rank = songs.select_one('td.number').text[0:2].strip()
        # 슬라이싱 : [a:b] a열에서 b열까지 추출.
        singer = songs.select_one('td.info > a.artist.ellipsis').text.strip()
    
        print(rank, title, singer)

    結果:



    授業を聞いてから

    	: 강의를 들으며 할때는 잘 따라하다가도 퀴즈나 숙제 할때는 몇번이고 헤매고 오류나고
        	했지만 결국에는 혼자만의 힘으로 해내게 되는게 스파르타의 힘이 아닐까싶다. 어쩌면 
            다음에 다시 mongoDB를 하게 될때 다시 또 헤맬수도 있겠지만, 그때도 다시 잘 해낼거라
            는 자신감이 생겼다.
            이번 프로젝트에서 내가 가져온 주제가 선정이 되서 엄청 놀랐었다. 안될거라고 예상했기에
            주제설명도 엄청 떨면서 횡설수설한 기분이었지만, 팀원분들이 워낙 좋은 분들이기도 하고 
            다들 나보다는 능력이 출중하신 분들이라서 이야기가 생각보다 잘 정리되었다.
            내일까지 홈페이지 구성을 생각해온뒤 이야기를 나누기로 했다. 고민 좀 해봐야할듯 하다.