본문 바로가기
파이썬

스파르타 코딩 수업 db연동 및 크롤링 연습

by ho-bolt 2021. 11. 8.

 

이렇게 영화 url을 입력하면 해당하는 영화 이미지와 제목 그리고 설명을 크롤링해오고 

내가 선택한 별점과 코멘트를 기록하면 나타나게 하는 사이트를 만들어보쟈! 

 

 

크롤링 코드 

 

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(url_receive, headers=headers)

soup = BeautifulSoup(data.text, 'html.parser')

 

DB 코드 

from pymongo import MongoClient
import certifi

ca = certifi.where()

client = MongoClient('mongodb+srv://test:sparta@cluster0.9admj.mongodb.net/Cluster0?retryWrites=true&w=majority', tlsCAfile=ca)
db = client.dbsparta

 

사용할 수 있는 메소드

 

doc = {'name':'bobby','age':21}
db.users.insert_one(doc)

# 한 개 찾기 - 예시
user = db.users.find_one({'name':'bobby'})

# 여러개 찾기 - 예시 ( _id 값은 제외하고 출력)
all_users = list(db.users.find({},{'_id':False}))

# 바꾸기 - 예시
db.users.update_one({'name':'bobby'},{'$set':{'age':19}})

# 지우기 - 예시
db.users.delete_one({'name':'bobby'})

 

서버에 GET과 POST를 해주는 코드를 작성한 후 해당 영화 정보를 URL를 통해 크롤링 해온후 기록하면 DB에 넣을 것이다. 따라서 크롤링 세팅코드와 DB세팅코드과 위와 같이 필요하다. 

 

그리고 flask, dnspython, requests, pymongo, certifi 패키지도 다운을 받아야 한다!

 

index.html 

 

 해당 영화카드가 나오는 html코드이다. 

 

기록하기를 누르면 posting 함수가 실행되고 ajax로 서버에 데이터를 보낸다. 

각 id값 ($('#url') 에 해당하는 값을 변수에 넣어주고 data로 포장해서 변수_give로 서버로 보내준다. 

 

POST로 넘겼기 때문에 POST에서 데이터를 포장해서 넘긴 변수_give를 request.form으로 받아서 변수_receive에 넣어준다. 

받은 url은 data=requests.get(url_receive,headers=headers)에 넣어준다. 

크롤링 하는 element를 보면 제목은 meta property의 og:title의 content에 담겨있고 image,와 description도 같은 형식으로 되어있따. 따라서 크롤링코드 soup.select_one으로 이 마크업코드를 넣어주고 content만 볼 수 있게 해준다. 

그리고 이것을 딕셔너리 형태로 만들어서 넣어주고 

db의 movies에 넣어준다. 

 

db에 잘 들어간 것을 알 수 있다. 

 

 

db에 넣었다면 jsonify로 다시 ajax에 넘겨준다. 

이건 위의 index.html에서 142번째 줄인 response로 들어가고 msg만 본다고 했기 때문에 영화 저장완료! 얼럿창이 뜬다. 그리고 새로고침을 통해 GET이 실행되게 해준다. 

 

 

새로고침을 통해 서버에서 받은 데이터를 읽으면서 클라에서 보이게 해준다. 

 

위의 코드처럼 db에 있는 데이터를 변수에 넣어주고 jquery를 통해 각 위치에 맞는 데이터를 넣어주고 

.append함수를 통해 추가해준다. 

 

그러면 위의 동영상처럼 사이트가 실행된다. 

 

 

 

 

위와 같은 흐름을 쉽게 가르쳐 주고 배울 수 있다!! 

 

https://spartacodingclub.kr/?f_name=%EC%84%9C%ED%98%B8%EC%A7%84&f_uid=609fc9a919d4d89267a89838 

 

스파르타코딩클럽

왕초보 8주 완성! 웹/앱/게임 빠르게 배우고 내것을 만드세요!

spartacodingclub.kr

 

728x90

'파이썬' 카테고리의 다른 글

함수와 클래스  (0) 2021.11.29
딕셔너리  (0) 2021.11.28
도메인 연결과 og태그  (0) 2021.11.11
서버 연결하기  (0) 2021.11.11
크롤링  (0) 2021.11.07