3주차에 크롤링에 대해서 배웠다. 왜 가장 인기있는 주차인지 알 것 같았다.
그러나 저작권문제 등으로 인해 크롤링은 가능한 사이트와 불가능한 사이트가 있다는 것을 알게 되었다. 수업에서는 크롤링할 페이지가 제공되어서 전혀 생각해보지 못했던 문제였다. 연습하고 싶으면 미리 알아보고 조심해야겠다.
💡 만들어져 있는 API 정보
→ 요청 정보 : 요청 URL /review , 요청 방식 = GET
→ 서버가 제공할 기능 : 클라이언트에게 정해진 메시지를 보냄
→ 응답 데이터 : JSON 형식) {'msg': '이 요청은 GET!'}
클라이언트와 서버 확인하기
서버부터 만들기
제목, 저자, 리뷰 정보 받아와서 DB 저장하기 (app.py)
## API 역할을 하는 부분
@app.route('/review', methods=['POST'])
def write_review():
title_receive = request.form['title_give']
author_receive = request.form['author_give']
review_receive = request.form['review_give']
doc = {
'title':title_receive,
'author':author_receive,
'review':review_receive
}
db.bookreview.insert_one(doc)
return jsonify({'msg': '저장 완료!!'})
클라이언트 만들기
받은 정보를 서버로 주기 (index.html)
function makeReview() {
let title = $('#title').val()
let author = $('#author').val()
let review = $('#bookReview').val()
$.ajax({
type: "POST",
url: "/review",
data: {title_give:title,author_give:author,review_give:review},
success: function (response) {
alert(response["msg"]);
window.location.reload();
}
})
완성 확인하기
클라이언트, 서버 확인하기
서버부터 만들기
DB에서 리뷰 가져와서 보내기
@app.route('/review', methods=['GET'])
def read_reviews():
reviews = list(db.bookreview.find({}, {'_id': False}))
return jsonify({'all_reviews': reviews})
클라이언트 만들기
서버에서 받은 all_reviews를 for문으로 돌면서 리뷰 붙여주기
function showReview() {
$.ajax({
type: "GET",
url: "/review",
data: {},
success: function (response) {
let reviews = response['all_reviews']
for (let i = 0; i < reviews.length; i++) {
let title = reviews[i]['title']
let author = reviews[i]['author']
let review = reviews[i]['review']
let temp_html = `<tr>
<td>${title}</td>
<td>${author}</td>
<td>${review}</td>
</tr>`
$('#reviews-box').append(temp_html)
}
}
})
}
완성 확인하기
진도가 나갈수록 점점 어려워지는 것 같다. 숙제하는데도 시간이 점점 더 걸리고... 5주차까지 1회독 끝나면 복습을 해야하는데 어떤식으로 복습을 해야할지 고민이 된다.