크롤링한 데이터 mongoDB에 저장하기HTML+CSS+JS+Flask/mongoDB+pymongo+크롤링2022. 4. 21. 03:11
Table of Contents
What to do?
- 네이버 영화 랭킹 홈페이지에 들어가서 영화의 평점 순위, 제목, 평점을 크롤링해서 mongoDB에 저장해보자
- db의 이름은 duck, 콜렉션의 이름은 movies로 하자!
- https://movie.naver.com/movie/sdb/rank/rmovie.naver?sel=pnt&date=20210829
순서
- request, bs4, pymongo 라이브러리 설치
- 크롤링할 데이터를 soup 객체에 저장
- pymongo로 mongoDB와 연결
- soup 객체에서 원하는 데이터만 추출해서 mongoDB에 저장
소스코드
import requests
from bs4 import BeautifulSoup
from pymongo import MongoClient
# bs4
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')
# pymongo
client = MongoClient('mongodb+srv://duck:1234@cluster0.f9x0w.mongodb.net/Cluster0?retryWrites=true&w=majority')
db = client.duck
# 크롤링 데이터 저장
select = soup.select('#old_content > table > tbody > tr')
for i in select:
rank = i.select_one('.ac > img')
name = i.select_one('.title > div > a')
rate = i.select_one('td.point')
if name is not None:
doc = {
'rank': rank['alt'],
'title': name.text,
'rate': rate.text
}
db.movies.insert_one(doc)
'HTML+CSS+JS+Flask > mongoDB+pymongo+크롤링' 카테고리의 다른 글
pymongo로 mongoDB 연결 + 조작 (0) | 2021.06.26 |
---|---|
mongoDB + Atlas 설정 (0) | 2021.06.25 |
크롤링 (bs4) (0) | 2021.06.24 |
requests 라이브러리 (0) | 2021.06.17 |
프로젝트 생성 및 패키지 설치하기 (0) | 2021.06.17 |
@덕구공 :: Duck9s'
주니어 개발자에욤
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!