Today I Learned

TIL0928_Jquery,크롤링,Flask,API 복습

개발자 김혜린 2021. 9. 28. 01:37

너무너무 피곤해서 공부한 것만 적고 자야겠다....

 

insert_form에 입력한 내용을 Mongo DB에 저장하는 과정을 복습했다

 

- Jquery : 자바스크립트 편하게 쓰게 해주는 문법.(id값 중요)

- 크롤링 코드 : 

import requests
from bs4 import BeautifulSoup

from pymongo import MongoClient
client = MongoClient('localhost', 27017) #내 컴퓨터에 돌아가는 mongoDB에 접속
db = client.dbsparta #dpsparta 라는 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')

# 코딩 시작
title=soup.select_one('#old_content > table > tbody > tr:nth-child(2) > td.title > div > a')
print(title.text)
print(title['href'])

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
        doc={
            'title':title,
            'rank':rank,
            'star':star
        }
        db.hering.insert_one(doc)

 

-Flask : 파이썬으로 서버 구동 쉽게 해준다 -> Flask 서버 돌리는 파일 = app.py

단 9줄로 서버 만들기!

from flask import Flask
app = Flask(__name__)

@app.route('/')
def home():
   return 'This is Home!'

if __name__ == '__main__':
   app.run('0.0.0.0',port=5000,debug=True)

 

-API : 클라이언트가 요청하는 방식, "창구"

 

ajax는 클라이언트가 창구로 서버에게 요청할 때 쓰는 코드

url의 /test 뒤 ?로 데이터를 가져옴

$.ajax({ #GET 확인 요청 코드(클라이언트->서버)
    type: "GET",
    url: "/test?title_give=봄날은간다",
    data: {},
    success: function(response){ #서버가 요청을 받아줘서 GET이 확실하게 들어갔다면, response에 jsonify 내용이 담김
       console.log(response)
    }
  })

 

-jsonify : 서버에서 클라이언트로 내려주는 데이터

@app.route('/test', methods=['GET'])
def test_get(): //GET 요청 코드
   title_receive = request.args.get('title_give')
   print(title_receive)
   return jsonify({'result':'success', 'msg': '이 요청은 GET!'})

 

 

 

 

insert_form 내용이

DB에 저장되지 않아...................................................................