3週目
91372 ワード
Pythonの言語コマンドでコンピュータがサーバの役割を果たす.
[復習]
エラーを修正するため、2を文字列にします.
=>num="2"またはnum=str(2)
プログラミングでは、関数が指定した変数を受け入れない操作を実行します.JavaScriptはPythonではなく括弧を使用する.
リストの例
Pythonはそのライブラリが非常に膨大で有名です.
パッケージは人によって作成されたライブラリです
仮想環境(virtualenvironment):リポジトリのフォルダ[Webスクリプト]
タグ内でテキストを撮影する場合:タグ.text タグ内属性の場合:タグ[属性] tr内でtitleを検索
上のコードに印刷(a tag.text)すると、エラーが発生します.
いいえ.メールを送るな!
[DB]
[復習]
小鬼手帳API
ロード直後にコードを実行
$(document).ready(function(){
listing();
});
function listing() {
console.log('화면 로딩 후 잘 실행되었습니다');
}
Ajaxベーススケルトン
$.ajax({
type: "GET",
url: "http://spartacodingclub.shop/post",
data: {},
success: function (response) {
console.log(response)
}
})
データを個別に出力
let rows = response['articles']
for (let i = 0; i < rows.length; i++) {
let comment = rows[i]['comment']
let desc = rows[i]['desc']
let image = rows[i]['image']
let title = rows[i]['title']
let url = rows[i]['url']
HTMLの作成と貼り付け
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>
</div>`
$('#cards-box').append(temp_html)
前のカードを削除
$(document).ready(function () {
$('#cards-box').empty();
listing();
});
【Python】
PythonをインストールするとPython翻訳パッケージがインストールされます.
✔変数
a = 3
b = 2
print(a+b) //5출력
first_name = 'HH'
num = 2
print(first_name+num) //에러
print(first name+num)/エラー位置
TypeError:str/「int」ではなくstrをstr//エラーに接続できる説明
=>Pythonで文字と数字を付けるとエラーになります.
$(document).ready(function(){
listing();
});
function listing() {
console.log('화면 로딩 후 잘 실행되었습니다');
}
$.ajax({
type: "GET",
url: "http://spartacodingclub.shop/post",
data: {},
success: function (response) {
console.log(response)
}
})
let rows = response['articles']
for (let i = 0; i < rows.length; i++) {
let comment = rows[i]['comment']
let desc = rows[i]['desc']
let image = rows[i]['image']
let title = rows[i]['title']
let url = rows[i]['url']
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>
</div>`
$('#cards-box').append(temp_html)
$(document).ready(function () {
$('#cards-box').empty();
listing();
});
PythonをインストールするとPython翻訳パッケージがインストールされます.
✔変数
a = 3
b = 2
print(a+b) //5출력
first_name = 'HH'
num = 2
print(first_name+num) //에러
print(first name+num)/エラー位置TypeError:str/「int」ではなくstrをstr//エラーに接続できる説明
=>Pythonで文字と数字を付けるとエラーになります.
=>num="2"またはnum=str(2)
インベントリ
a_list = ['사과','배','감']
print(a_list[0]) //사과 출력
a_list = ['사과','배','감']
a_list.append('수박')
print(a_list) //['사과','배','감','수박'] 출력
専制的
a_dict = {'name':'bob','age':27}
print(a_dict['age']) //27 출력
a_dict = {'name':'bob','age':27}
a_dict['height'] = 178
print(a_dict) //{'name':'bob','age':27,'height':178} 출력
✔関数
プログラミングでは、関数が指定した変数を受け入れない操作を実行します.
def sum(num1,num2):
return num1+num2
result = sum(2,3)
print(result) //5 출력
条件文
age= 25
if age > 20:
print('성인입니다')
else:
print('청소년입니다')
//성인입니다 출력
def is_adult(age): # is_adult라는 age라는 변수를 받는 함수를 만든다.
if age > 20:
print('성인입니다')
else:
print('청소년입니다')
is_adult(30)
is_adult(15)
//성인입니다, 청소년입니다 출력
くりかえし文
リストの例
fruits = ['사과','배','배','감','수박','귤','딸기','사과','배','수박']
for fruit in fruits: #fruits를 하나씩 돌면서 그걸 빼가지고 변수(fruit)에 넣고
print(fruit) #변수를 내용물에 넣어 출력
//사과,배,배,감,수박,귤,딸기,사과,배,수박 출력
fruits = ['사과','배','배','감','수박','귤','딸기','사과','배','수박']
count = 0
for fruit in fruits:
if fruit == '사과':
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}]
print(person)
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 28, john 7, smith 17, ben 27 출력
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:
if person['age'] < 20:
print(person)
//{'name': 'john', 'age': 7}
{'name': 'smith', 'age': 17} 출력
▶Pythonコース
Pythonはそのライブラリが非常に膨大で有名です.
パッケージは人によって作成されたライブラリです
仮想環境(virtualenvironment):リポジトリのフォルダ
import requests # requests 라이브러리 설치 필요
r = requests.get('http://openapi.seoul.go.kr:8088/6d4d776b466c656533356a4b4b5872/json/RealtimeCityAir/1/99')
rjson = r.json()
print(rjson['RealtimeCityAir']['row'][0]['MSRSTE_NM'])
//중구 출력
繰り返し文の使用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:
gu_name = gu['MSRSTE_NM']
gu_mise = gu['IDEX_MVL']
print(gu_name,gu_mise)
//중구 52.0, ~~~, 강동구 51.0 출력
if文の使用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:
gu_name = gu['MSRSTE_NM']
gu_mise = gu['IDEX_MVL']
if (gu_mise > 100) :
print(gu_name, gu_mise)
//미세먼지가 100을 넘는 곳만 출력
[Webスクリプト]
NAVERムービーページ
デフォルトのスクロール
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://movie.naver.com/movie/sdb/rank/rmovie.nhn?sel=pnt&date=20200303',headers=headers)
# headers는 코드단에서 요청했을 때 기본적인 요청을 막아두는 사이들이 많다.
# 그래서 브라우저에서 엔터친 것 마냥 효과를 내주는 것이다.
soup = BeautifulSoup(data.text, 'html.parser')
# 데이터로 요청 후 BeautifulSoup 형태로 솎아내는 것이다.
# 코딩 시작
スクロール時に要求し、BeautifulSoup(bs 4)を使用して必要な情報をだまし取る.
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://movie.naver.com/movie/sdb/rank/rmovie.nhn?sel=pnt&date=20200303',headers=headers)
# headers는 코드단에서 요청했을 때 기본적인 요청을 막아두는 사이들이 많다.
# 그래서 브라우저에서 엔터친 것 마냥 효과를 내주는 것이다.
soup = BeautifulSoup(data.text, 'html.parser')
# 데이터로 요청 후 BeautifulSoup 형태로 솎아내는 것이다.
# 코딩 시작
✔select one(一つ)
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://movie.naver.com/movie/sdb/rank/rmovie.nhn?sel=pnt&date=20200303',headers=headers)
soup = BeautifulSoup(data.text, 'html.parser')
title = soup.select_one('#old_content > table > tbody > tr:nth-child(2) > td.title > div > a')
print(title.text)
//그린 북, 가버나움, ~~~ 등 출력
print(title['href'])
// /movie/bi/mi/basic.naver?code=171539 출력
✔select(複数)
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://movie.naver.com/movie/sdb/rank/rmovie.nhn?sel=pnt&date=20200303',headers=headers)
soup = BeautifulSoup(data.text, 'html.parser')
# #old_content > table > tbody > tr:nth-child(2)
# #old_content > table > tbody > tr:nth-child(3)
# => 겹치는 부분인 #old_content > table > tbody > tr만 가져오기
trs = soup.select('#old_content > table > tbody > tr')
for tr in trs:
print(tr)
//해당 코드들 출력
<tr>
<td class="ac"><img src="https://ssl.pstatic.net/imgmovie/2007/img/common/bullet_r_r01.gif" alt="01" width="14" height="13"></td>
<td class="title">
<div class="tit5">
<a href="/movie/bi/mi/basic.naver?code=171539" title="그린 북">그린 북</a>
</div>
</td>
<!-- 평점순일 때 평점 추가하기 -->
<td><div class="point_type_2"><div class="mask" style="width:96.00000381469727%"><img src="https://ssl.pstatic.net/imgmovie/2007/img/common/point_type_2_bg_on.gif" width="79" height="14" alt=""></div></div></td>
<td class="point">9.60</td>
<td class="ac"><a href="/movie/point/af/list.naver?st=mcode&sword=171539" class="txt_link">평점주기</a></td>
<!----------------------------------------->
<td class="ac"><img src="https://ssl.pstatic.net/imgmovie/2007/img/common/icon_na_1.gif" alt="na" width="7" height="10" class="arrow"></td>
<td class="range ac">0</td>
</tr>
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://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')
# #old_content > table > tbody > tr:nth-child(2) > td.title > div > a
# => 중복 제외 나머지 td.title > div > a로 title 가져오기
for tr in trs:
a_tag = tr.select_one('td.title > div > a')
print(a_tag)
//None
<a href="/movie/bi/mi/basic.naver?code=171539" title="그린 북">그린 북</a> 등 출력
=>出力されたnoneは、次の画像で直線を表します.上のコードに印刷(a tag.text)すると、エラーが発生します.
いいえ.メールを送るな!
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://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:
a_tag = tr.select_one('td.title > div > a')
if a_tag is not None:
print(a_tag)
//none을 제외하고 출력됨
<a href="/movie/bi/mi/basic.naver?code=171539" title="그린 북">그린 북</a> 등
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://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:
a_tag = tr.select_one('td.title > div > a')
if a_tag is not None:
title = a_tag.text
print(title)
//그린 북, 가버나움, ~~~ 등 출력
▶Q.スクロール練習
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://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:
a_tag = tr.select_one('td.title > div > a')
if a_tag is not None:
# #old_content > table > tbody > tr:nth-child(2) > td:nth-child(1) > img
rank = tr.select_one('td:nth-child(1) > img')['alt']
title = a_tag.text
# #old_content > table > tbody > tr:nth-child(2) > td.point
star = tr.select_one('td.point').text
print(rank,title,star)
//01 그린 북 9.60, 02 가버나움 9.59 등 출력
[DB]
MongoDBはデータベースで、パソコンで動いていますが、目には見えません.
Robo 3 Tでは、MongoDBのデータを表示できます.
データベースを使用するのは、データをよりよく使用するためです.
RDBMS(SQL)
行/列の外観を固定したExcelにデータを格納するのと同じです.
1万個のデータがロードされている場合、真ん中に突然列を追加しやすくなります.
固定されているため、データの一貫性や分析が容易です.
ex)MS-SQL、My-SQL等
No-SQL
バイナリ形式のDB
フリーフォームのデータ・マウントには便利ですが、一貫性が欠けている可能性があります.
ex) MongoDB
▶ pymongo
pymongoは、MongoDBを操作するためのライブラリです.
pymongoデフォルトコード
from pymongo import MongoClient
client = MongoClient('localhost', 27017) #내 컴퓨터에 돌아가고 있는 MongoDB에 접속
db = client.dbsparta #dbsparta라는 DB 이름으로 접속
# 코딩 시작
✔insert(保存)
doc = {'name':'bobby','age':21} #딕셔너리 하나를 만듦
db.users.insert_one(doc) #딕셔너리를 db 안에 users라는 collection에 insert해라
Robo 3 Tで確認すると追加されていることがわかります.
挿入を続行すると、下に追加を続行します.
✔find(複数検索)
same_ages = list(db.users.find({'age':21},{'_id':False}))
print(same_ages)
//[{'name': 'bobby', 'age': 21}, {'name': 'jane', 'age': 21}] 출력
# 리스트 안에 딕셔너리 값이 있는대로 출력이 되었으니 따로따로 출력해보자!
same_ages = list(db.users. find({'age':21},{'_id':False}))
for person in same_ages:
print(person)
//{'name': 'bobby', 'age': 21}
{'name': 'jane', 'age': 21} 출력
すべてのファイルを無条件に見つける
same_ages = list(db.users. find({},{'_id':False}))
for person in same_ages:
print(person)
//{'name': 'bobby', 'age': 21}
{'name': 'John', 'age': 27}
{'name': 'smith', 'age': 30}
{'name': 'jane', 'age': 21} 출력
✔find one(一つ検索)
user = db.users.find_one({'name':'bobby'}) #name이 bobby인 애의 정보만 가지고 와라
print(user)
//{'_id': ObjectId('610cf38dadc8ef7e5f910951'), 'name': 'bobby', 'age': 21} 출력
#id값은 빼고 가져올 때
user = db.users.find_one({'name':'bobby'},{'_id':False})
print(user)
//{'name': 'bobby', 'age': 21} 출력
#그 중 나이만 출력하고 싶다면!
user = db.users.find_one({'name':'bobby'},{'_id':False})
print(user['age'])
//21 출력
✔update one(置き換え)
db.users.update_one({'name':'bobby'},{'$set':{'age':19}}) #name이 bobby인 애를 가져와서 age를 19로 바꿔라
#update_many도 있음. 이걸 쓰면 name이 bobby인 애를 모두 찾아서 age를 19로 바꾸게 됨
하지만, 한번에 다 바꾸는 것이기 때문에 위험해서 잘 사용안함
✔delete one(クリア)
db.users.delete_one({'name':'bobby'}) #name이 bobby인 애를 찾아서 delete해라
#delete_many도 있지만 update_many와 같은 이유로 사용안함
!pymongoコードが一目瞭然!
# 저장 - 예시
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'})
[スクロール結果をDBに保存する] import requests
from bs4 import BeautifulSoup
#DB를 사용하기 위해 pymongo 임포트 코드 가져오기
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:
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
# insert하기
doc = {
'rank':rank,
'title':title,
'star':star
}
db.movies.insert_one(doc)
▶Quiz Webスクリプトの使用結果
1)映画祭目録『マトリックス』の採点を獲得from pymongo import MongoClient
client = MongoClient('localhost', 27017)
db = client.dbsparta
movie = db.movies.find_one({'title':'매트릭스'})
print(movie['star'])
//9.39 출력
2)『マトリックス』の採点と同じ採点映画タイトルを獲得from pymongo import MongoClient
client = MongoClient('localhost', 27017)
db = client.dbsparta
movie = db.movies.find_one({'title':'매트릭스'})
movie_star = movie['star']
movie_A = list(db.movies.find({'star':movie_star}))
for movie_name in movie_A:
print(movie_name['title'])
//인생은 아름다워
매트릭스
라이언 일병 구하기
사운드 오브 뮤직
헬프
포레스트 검프
안녕 베일리
글래디에이터 출력
3)『マトリックス』映画を0に採点するfrom pymongo import MongoClient
client = MongoClient('localhost', 27017)
db = client.dbsparta
db.movies.update_one({'title':'매트릭스'},{'$set':{'star':0}})
[Q.ジョブ]
Genieランキング2020年4月3日
Genie音楽サイトを使用してランキング/曲名/歌手を閲覧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()
singer = tr.select_one('td.info > a.artist.ellipsis').text.strip()
print(rank,title,singer)
文字列の余白を削除 .strip()
クリップ文字列関数テキスト[0:2]を使用
Reference
この問題について(3週目), 我々は、より多くの情報をここで見つけました
https://velog.io/@spahy12/스파르타-왕초보-3주차
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
from pymongo import MongoClient
client = MongoClient('localhost', 27017) #내 컴퓨터에 돌아가고 있는 MongoDB에 접속
db = client.dbsparta #dbsparta라는 DB 이름으로 접속
# 코딩 시작
doc = {'name':'bobby','age':21} #딕셔너리 하나를 만듦
db.users.insert_one(doc) #딕셔너리를 db 안에 users라는 collection에 insert해라
same_ages = list(db.users.find({'age':21},{'_id':False}))
print(same_ages)
//[{'name': 'bobby', 'age': 21}, {'name': 'jane', 'age': 21}] 출력
# 리스트 안에 딕셔너리 값이 있는대로 출력이 되었으니 따로따로 출력해보자!
same_ages = list(db.users. find({'age':21},{'_id':False}))
for person in same_ages:
print(person)
//{'name': 'bobby', 'age': 21}
{'name': 'jane', 'age': 21} 출력
same_ages = list(db.users. find({},{'_id':False}))
for person in same_ages:
print(person)
//{'name': 'bobby', 'age': 21}
{'name': 'John', 'age': 27}
{'name': 'smith', 'age': 30}
{'name': 'jane', 'age': 21} 출력
user = db.users.find_one({'name':'bobby'}) #name이 bobby인 애의 정보만 가지고 와라
print(user)
//{'_id': ObjectId('610cf38dadc8ef7e5f910951'), 'name': 'bobby', 'age': 21} 출력
#id값은 빼고 가져올 때
user = db.users.find_one({'name':'bobby'},{'_id':False})
print(user)
//{'name': 'bobby', 'age': 21} 출력
#그 중 나이만 출력하고 싶다면!
user = db.users.find_one({'name':'bobby'},{'_id':False})
print(user['age'])
//21 출력
db.users.update_one({'name':'bobby'},{'$set':{'age':19}}) #name이 bobby인 애를 가져와서 age를 19로 바꿔라
#update_many도 있음. 이걸 쓰면 name이 bobby인 애를 모두 찾아서 age를 19로 바꾸게 됨
하지만, 한번에 다 바꾸는 것이기 때문에 위험해서 잘 사용안함
db.users.delete_one({'name':'bobby'}) #name이 bobby인 애를 찾아서 delete해라
#delete_many도 있지만 update_many와 같은 이유로 사용안함
# 저장 - 예시
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'})
import requests
from bs4 import BeautifulSoup
#DB를 사용하기 위해 pymongo 임포트 코드 가져오기
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:
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
# insert하기
doc = {
'rank':rank,
'title':title,
'star':star
}
db.movies.insert_one(doc)
▶Quiz Webスクリプトの使用結果
1)映画祭目録『マトリックス』の採点を獲得
from pymongo import MongoClient
client = MongoClient('localhost', 27017)
db = client.dbsparta
movie = db.movies.find_one({'title':'매트릭스'})
print(movie['star'])
//9.39 출력
2)『マトリックス』の採点と同じ採点映画タイトルを獲得from pymongo import MongoClient
client = MongoClient('localhost', 27017)
db = client.dbsparta
movie = db.movies.find_one({'title':'매트릭스'})
movie_star = movie['star']
movie_A = list(db.movies.find({'star':movie_star}))
for movie_name in movie_A:
print(movie_name['title'])
//인생은 아름다워
매트릭스
라이언 일병 구하기
사운드 오브 뮤직
헬프
포레스트 검프
안녕 베일리
글래디에이터 출력
3)『マトリックス』映画を0に採点するfrom pymongo import MongoClient
client = MongoClient('localhost', 27017)
db = client.dbsparta
db.movies.update_one({'title':'매트릭스'},{'$set':{'star':0}})
[Q.ジョブ]
Genieランキング2020年4月3日
Genie音楽サイトを使用してランキング/曲名/歌手を閲覧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()
singer = tr.select_one('td.info > a.artist.ellipsis').text.strip()
print(rank,title,singer)
文字列の余白を削除 .strip()
クリップ文字列関数テキスト[0:2]を使用
Reference
この問題について(3週目), 我々は、より多くの情報をここで見つけました
https://velog.io/@spahy12/스파르타-왕초보-3주차
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
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()
singer = tr.select_one('td.info > a.artist.ellipsis').text.strip()
print(rank,title,singer)
Reference
この問題について(3週目), 我々は、より多くの情報をここで見つけました https://velog.io/@spahy12/스파르타-왕초보-3주차テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol