11エンコーディング完了チャレンジ[3週間]7日間


1.学習内容


✔ongodbは、バイナリ形式で格納されたデータプログラムです.
✔ pymongodB
[基本コード]
from pymongo import MongoClient
client = MongoClient('localhost', 27017)
db = client.dbsparta
# 코딩 시작
実行後Robot 3 Tを実行し、Mylocaldb Refreshをクリックし、Collection>Usersをダブルクリックします.
次に、「View results in table mode」アイコンをクリックします.
-[insert]
from pymongo import MongoClient           -- pymongo를 임포트 하기
client = MongoClient('localhost', 27017)  -- mongoDB는 27017 포트로 돌아갑니다.
db = client.dbsparta                      -- 'dbsparta'라는 이름의 db를 만듭니다.
doc = {'name':'bobby','age':21}
db.users.insert_one(doc)                  -- user라는 컬렉션 안에 insert 해라.
実行後にCollection>usersをダブルクリック!
-[find](すべての結果値を取得)
from pymongo import MongoClient
client = MongoClient('localhost', 27017)
db = client.dbsparta
same_ages = list(db.users.find({'age':21},{'_id':False}))
[{'name': 'bobby', 'age': 21}, {'name': 'john', 'age': 21}, {'name': 'jane', 'age': 21}]
listにはdickshernerとして存在する.
same_ages = list(db.users.find({'age':21},{'_id':False}))
for person in same_ages:
    print(person)
{'name': 'bobby', 'age': 21}
{'name': 'john', 'age': 21}
{'name': 'jane', 'age': 21}
same_ages = list(db.users.find({},{'_id':False}))  
for person in same_ages:
    print(person)
「すべてを持ってきたいなら、カッコを使ってください」「よく使います.
-[find](特定の結果値のみ取得)
from pymongo import MongoClient
client = MongoClient('localhost', 27017)
db = client.dbsparta
user = db.users.find_one({'name':'bobby'},{'_id':False})
print(user)
{'name': 'bobby', 'age': 21}
-[update]
from pymongo import MongoClient
client = MongoClient('localhost', 27017)
db = client.dbsparta
db.users.update_one({'name':'bobby'},{'$set':{'age':19}})
実行後にCollection>usersをダブルクリック!これで更新された数字が変わります.
-ほとんど使わない[delete]
from pymongo import MongoClient
client = MongoClient('localhost', 27017)
db = client.dbsparta
db.users.delete_one({'name':'bobby'})
実行後にCollection>usersをダブルクリック!これで削除した数字が変わります.
サマリ
# 저장 - 예시
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'})
✔6日目に行った映画Webスクリプトの結果を保存する
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')

movies = soup.select('#old_content > table > tbody > tr')

for movie in movies:
    a_tag = movie.select_one('td.title > div > a')
    if a_tag is not None:
        rank = movie.select_one('td:nth-child(1) > img')['alt']
        title = a_tag.text
        star = movie.select_one('td.point').text
        doc = {
            'rank':rank,
            'title':title,
            'star':star
        }
        db.movies.insert_one(doc)
Runを実行したらCollectionをリフレッシュし、>moviesをダブルクリック!
✔Web scraping結果の使用
[映画祭カタログ『マトリックス』の採点を獲得]
from pymongo import MongoClient
client = MongoClient('localhost', 27017)
db = client.dbsparta

movie = db.movies.find_one({'title':'매트릭스'},{'_id':False})
print(movie['star'])
9.39
[『マトリックス』と同じスコアの映画名を獲得]
from pymongo import MongoClient
client = MongoClient('localhost', 27017)
db = client.dbsparta

target_movie = db.movies.find_one({'title':'매트릭스'},{'_id':False})
target_star = target_movie['star']         ---9.39를 target_star라고 지정한 뒤,

target_movies = list(db.movies.find({'star':target_star},{'_id':False}))   --조건인 'star'가 target_star와 같아져야 한다.

for target in target_movies:   ---리스트안에 딕셔너리형태로 되어있을 경우, 간단히 for문을 이용한다.
    print(target['title'])
[マトリックス映画を0に採点する]
from pymongo import MongoClient
client = MongoClient('localhost', 27017)
db = client.dbsparta

db.movies.update_one({'title':'매트릭스'},{'$set':{'star':0}})

第3週タスク


各コード(title,rank,artist)ごとに1つずつ印刷(title),print(rank),print(artist)し,結果値を確認しながら欠落した部分をGoogle化して追加!
for tr in trs:
	title = tr.select_one('td.info > a.title.ellipsis')
    print(title.text)
結果は空白がたくさんあります.Googleで「Pythonの空白を削除する」と検索すると「どの部分」「strip()」が必要です!
for tr in trs:
    rank = tr.select_one('td.number')
    print(rank.text)
結果的に上昇・下降など不要な部分があります.
Googleが「Python文字列の切り取り」を検索した場合、[第1部(0):終了部(数字)]
1から9までの数字にもスペースが表示されます.strip()も貼ってあります.
------完了本------
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://www.genie.co.kr/chart/top200?ditc=D&ymd=20200403&hh=23&rtm=N&pg=1',headers=headers)

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[0:2].strip()         
    title = tr.select_one('td.info > a.title.ellipsis').text.strip()   
    artist = tr.select_one('td.info > a.artist.ellipsis').text
    print(rank,title,artist)
✔サーバーとは?
コンピュータプログラム
「ローカル開発環境」とは,同一のコンピュータ上にサーバを作成し,要求を出すことである.クライアント=サーバ!!

✔フレームとライブラリ
フレームワークは、他の人が制定したルールやフレームワーク内で自由に私がコードすることができます.だから1つのフレームワークでしか書けません!
ライブラリは私が自分で作ったので、真ん中で自由に他の人が作ったものを使うことができます.100個を持ってきて1000個など待つことができます.
✔[Flash起動コード]
from flask import Flask
app = Flask(__name__)
@app.route('/')
def home():
   return 'This is Home!'
if __name__ == '__main__':
   app.run('0.0.0.0',port=5000,debug=True)
実行後、
http://localhost:5000/に接続すれば、これが家族です!
from flask import Flask
app = Flask(__name__)

@app.route('/')
def home():
   return '나의 첫 서버!!!'

@app.route('/mypage')
def mypage():
   return 'mypage 입니다.'

if __name__ == '__main__':
   app.run('0.0.0.0',port=5000,debug=True)
実行後、
http://localhost:5000/mypageが接続されている場合はmypageです.
from flask import Flask
app = Flask(__name__)

@app.route('/')
def home():
   return '<button>나는버튼이다</button>'

if __name__ == '__main__':
   app.run('0.0.0.0',port=5000,debug=True)
実行後、
http://localhost:5000/に接続すると、ボタンウィンドウが表示されます.

2.勉強の心得


今日は一夫一妻制でスクロールを実行する方法を学びましたが、他の人が書いたコードを変えて、これは面白いです.
現在、コンピュータで稼働しているサーバの理解に伴い、私たちが使用しているページを理解し始めました.