WEB/python

[python] pymongo, 크롤링한 데이터를 db에 저장하고 찾고 수정하기

자바칩 프라푸치노 2021. 6. 10. 15:44
from builtins import print

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:

    a_tag = tr.select_one('td.title > div > a')

    if a_tag is not None:
        title = a_tag.text
        rank = tr.select_one('td:nth-child(1) > img')['alt']
        point = tr.select_one('td.point').text
        doc = {
            'rank': rank,
            'title': title,
            'point': point
        }
        db.movies.insert_one(doc)


from builtins import print

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:
#
#     a_tag = tr.select_one('td.title > div > a')
#
#     if a_tag is not None:
#         title = a_tag.text
#         rank = tr.select_one('td:nth-child(1) > img')['alt']
#         point = tr.select_one('td.point').text
#         doc = {
#             'rank': rank,
#             'title': title,
#             'point': point
#         }
#         db.movies.insert_one(doc)

# 매트릭스의 평점 가져오기
metrix = db.movies.find_one({'title':'매트릭스'})
print(metrix['point'])

# 매트릭스의 평점과 같은 평점인 영화 제목 가져오기
same_points = list(db.movies.find({'point':metrix['point']},{'_id':False}))
for same in same_points:
    print(same['title'])

# 매트릭스 영화의 평점을 0으로 만들기
db.movies.update_one({'title':'매트릭스'},{'$set':{'point':'0'}})
728x90