11エンコーディング完了チャレンジ[3週間]7日間
8847 ワード
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.勉強の心得
今日は一夫一妻制でスクロールを実行する方法を学びましたが、他の人が書いたコードを変えて、これは面白いです.
現在、コンピュータで稼働しているサーバの理解に伴い、私たちが使用しているページを理解し始めました.
Reference
この問題について(11エンコーディング完了チャレンジ[3週間]7日間), 我々は、より多くの情報をここで見つけました https://velog.io/@yimji20/11코딩완주챌린지-3주차-7일차テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol