3주차-13,14 웹스크래핑 결과 저장&이용하기

·2022년 1월 27일
0

웹개발

목록 보기
8/13

★. insert 하기

3주차-9에서 먼저 만들었던 코딩을 불러오면 아래와 같다 {3-9참고 : 링크텍스트}

import requests
from bs4 import BeautifulSoup

***여기에 db를 쓸 수 있는 코드를 붙여넣기***

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
print(rank,title,star)
	***insert할 수있는 새로운 값은 print 지우고 여기에 넣기***

먼저 db를 쓸 수 있게 아래의 코드를 붙여넣는다

// pymongo를 임포트 하기
from pymongo import MongoClient
// mongoDB는 27017 포트로 돌아갑니다.
client = MongoClient('localhost', 27017)
// 'dbsparta'라는 이름의 db를 만듭니다.
db = client.dbsparta

insert의 기본예시구조는 doc = {'name':'bobby','age':21}
db.users.insert_one(doc) 이므로 맨 윗상단의 정보를 insert하기 위해서 만들어주기.

doc = {
'rank':rank,
'title':title,
'star':star
}
db.movies.insert_one(doc) //새로운컬렉션에 넣는 것이므로 movies라고 변경하기!

Quiz풀기 전에 DB에 저장된 것을 확인 후 풀기!

Quiz 1

영화제목 '매트릭스'의 평점을 가져오기


db안에 기존 영화관련리스트업이 되었으므로 db정보를 이용해야 수월하다!

//db를 쓸 수 있게 db불러오기
from pymongo import MongoClient
client = MongoClient('localhost', 27017)
db = client.dbsparta

movie = db.movies.find_one({'title':'매트릭스'})
//db의 moives 컬렉션에서 '매트릭스'정보 하나만 찾으므로 find_one사용
print(movie['star'])
//원하는 정보는 평점이므로 star로 지정되어있으므로 movie안의 star값 보이게하기

Quiz 2

'매트릭스'의 평점과 같은 평점의 영화 제목들을 가져오기

예시)
movie = db.movies.find_one({'title':'매트릭스'})
target_star = movie['star'] 

target_movies = list(db.movies.find({'star':target_star},{'_id':False}))

//list안에 딕셔너리가 있는 경우에는 for문을 이용하면 깔끔하게 나옴!
for target in target_movies:
    print(target['title']) //같은평점의 제목만 원하므로 'title'지정
내가 한 예시) 매트릭스의 평점을 보고 지정한 값
movie = list(db.movies.find({'star':'9.39'},{'_id':False}))
for movies in movie: 
    print(movies['title'])

Quiz 3

매트릭스 영화의 평점을 0으로 만들기

from pymongo import MongoClient
client = MongoClient('localhost', 27017)
db = client.dbsparta

db.movies.update_one({'title':'매트릭스'},{'$set':{'star':'0'}})
title이 매트릭스인 곳의 star를 0으로 업데이트지정하면 바뀌는 것을 확인!
**그냥 숫자 0만쓰면 숫자로인식 '0'으로 쓰면 문자열로 인식
>>db에서는 문자열로 인식되어있어 ''를 사용! 
>>로보에 표시될 때 앞에 #=숫자 ""=문자열!!
profile
귀엽고 상큼하다?

0개의 댓글