문제점
제목의 과정이 잠깐 이해가 잘 되지 않았다.
시도해 본것
코드를 살펴보았다.
해결책
구조는 간단하다. 웹에서 url을 입력하고 '기록하기'를 누르면 function posting()이 실행된다. 그러면 입력한 url이 파이썬 서버로 가고 서버에서는 그 url을 bs4로 파싱해서 meta 태그들을 변수에 넣는다.
그 변수를 이용해 pymongo로 몽고디비에 집어넣는다.
해당 코드는 아래와 같다.
python
@app.route("/movie", methods=["POST"])
def movie_post():
url_receive = request.form['url_give']
comment_receive = request.form['comment_give']
star_receive = request.form['star_give']
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')
ogtitle = soup.select_one('meta[property="og:title"]')['content']
ogdesc = soup.select_one('meta[property="og:description"]')['content']
ogimage = soup.select_one('meta[property="og:image"]')['content']
doc = {
'title': ogtitle,
'desc': ogdesc,
'image': ogimage,
'comment': comment_receive,
'star': star_receive
};
db.movies.insert_one(doc)
return jsonify({'msg':'저장완료'})
Javascript
function posting() {
let url = $("#url").val(); // 클라이언트측에서 입력한 값
let comment = $("#comment").val();
let star = $("#star").val();
let formData = new FormData(); // 입력값들을 formData에 넣는다.
formData.append("url_give", url);
formData.append("comment_give", comment);
formData.append("star_give", star);
fetch('/movie', {method : "POST",body : formData}).then((res) => res.json()).then((data) => {
alert(data['msg']) // 표지(url?)가 /movie 이고 POST 방식인 API로 formData를 보낸다.
window.location.reload()
})
}
알게된 점
아직까진 할만하다.^^
'항해99' 카테고리의 다른 글
깃헙에서 같은 파일을 여러명이 작업하니 에러가 뜬다. (0) | 2023.03.30 |
---|---|
깃헙은 collaborators 추가, 몽고디비는 프로젝트로 invite (0) | 2023.03.30 |
부트캠프 새시작. 첫 프로젝트. (0) | 2023.03.27 |
aws Elastic Beanstalk 배포 종료후 다시 배포하기 (0) | 2023.03.25 |
beautiful soup 4 : <html> 로부터 파싱하여 도출된 리스트는 또다른 리스트로 파싱되지 않는다. (0) | 2023.03.22 |