
* 겪고 있는 문제 상황을 최대한 자세하게 작성해주세요.
* 문제 해결을 위해 어떤 시도를 해보았는지 구체적으로 함께 알려주세요.
웹페에지에서 url 넣고 등록하기 하면 페이지가 아무 반응이 없습니다. 저장완료! 뜨고 DB에 저장이 되어야 하는데 DB에 데이터도 들어가지 않아 있습니다
import requests
from bs4 import BeautifulSoup
from pymongo import MongoClient
client = MongoClient("mongodb+srv://sparta:test@cluster0.c21potr.mongodb.net/?retryWrites=true&w=majority")
db = client.pirates_lv1
from flask import Flask, render_template, request, jsonify
app = Flask(__name__)
@app.route('/')
def home():
return render_template("index.html")
@app.route('/exhibit', methods=["POST"])
def post_exhibit():
url_receive = request.form["url_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')
title = soup.select_one('#container > div.wide-inner > section > h3').text
period = soup.select_one('#container > div.detial-cont-element.active > div > dl:nth-child(1) > dd').text.strip()
tags = soup.select_one('#container > section.tag-element.poi > p').text.replace('\n', ' ')
image = soup.select('.item')[1]['style'].replace("background-image:url('",'').replace("');",'')
image = 'https://korean.visitseoul.net' + image
print(image)
doc = {
'url':url_receive,
'title':title,
'period':period,
'tags':tags,
'image':image
}
db.exhibition.insert_one(doc)
return jsonify({"msg": "저장 완료!"})
if __name__ == "__main__":
app.run(debug=True, port=8080)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>오늘의 전시</title>
<script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.12.4.min.js"></script>
<style>
html,
body,
h1,
h2,
h3,
p,
a,
span {
margin: 0;
padding: 0;
}
/* 기본 세팅 */
.wrap {
width: 1050px;
margin: auto;
}
.card {
width: 320px;
height: 340px;
display: flex;
flex-direction: column;
align-items: flex-start;
justify-content: flex-start;
margin: 16px 10px;
/*여백 아래위 오왼 */
border: 1px solid black;
}
.card-wrap {
display: flex;
flex-direction: row;
flex-wrap: wrap;
}
.card-image {
background-image: url('https://talkimg.imbc.com/TVianUpload/tvian/TViews/image/2022/10/17/c0dadb29-a24d-486d-b9c0-fab63d6a3c50.jpg');
background-position: center;
background-size: contain;
/* 요 세개는 항상 같이 다님 */
width: 100%;
height: 200px;
}
.card>span {
margin: 8px;
}
.card-title {
font-size: 18px;
font-weight: bold;
}
.period {
color: yellowgreen;
font-size: 14px;
}
.tags {
color: green;
font-size: 14px;
word-break: keep-all;
}
.url-form {
align-items: center;
justify-content: space-around;
}
.plus-form {
align-items: center;
justify-content: center;
cursor: pointer;
}
</style>
<script>
$(document).ready(() => {
showPlusForm();
})
const showUrlForm = () => {
$('#url-form').show();
$('#plus-form').hide();
} //함수를 마치 변수처럼 쓸 일이 나중에 있음
const showPlusForm = () => {
$('#url-form').hide();
$('#plus-form').show();
}
const posting = () => {
let url = $('#url').val();
let formData = new FormData()
formData.append("url_give", url)
fetch('/target', {method: "POST", body: formData}).then(res => res.json()).then(data => {
alert(data['msg'])
window.location.reload();
})
}
</script>
</head>
<body>
<div class="wrap">
<h1>오늘의 전시</h1>
<div class="card-wrap">
<div class="card">
<div class="card-image"></div>
<span class="card-title">제목</span>
<span class="period">기간</span>
<span class="tags">#설명회 #설명회 #설명회 #설명회 #설명회 #설명회 #설명회 #설명회 #설명회</span>
</div>
<div id = "url-form" class="url-form card">
<input id = "url" placeholder="전시 URL을 입력해주세요">
<div>
<button onclick="showPlusForm()">취소하기</button>
<button onclick = "posting()">등록하기</button>
</div>
</div>
<div id = "plus-form" onclick="showUrlForm()" class="plus-form card">
<span>+</span>
<span>추가하기</span>
</div>
</div>
</div>
</body>
</html>
