웹페이지에서 데이터 크롤링을 해주기 위해 필요한 페키지를 import해준다.
# 크롤링을 하기 위한 package import
import requests
from bs4 import BeautifulSoup
크롤링 또는 작성한 데이터를 DB에 저장할때 사용하는 import코드
# mongoDB에 저장하기 위한 package import
from pymongo import MongoClient
client = MongoClient('localhost', 27017)
db = client.dbsparta
# mongoDB에 저장하기 위한 package import
from pymongo import MongoClient
client = MongoClient('mongodb+srv://<username>:<password>@cluster0.zuy17.mongodb.net/myFirstDatabase?retryWrites=true&w=majority')
db = client.dbsparta
크롤링된 데이터를 DB에 저장하는 POST API 역할을 하는 코드
## API 역할을 하는 부분
@app.route('/memo', methods=['POST'])
def saving():
# 클라이언트로부터 전달 받는 데이터
url_receive = request.form['url_give']
comment_receive = request.form['comment_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)
# 크롤링한 데이터를 BS에 넣는 부분
soup = BeautifulSoup(data.text, 'html.parser')
# og 태그 데이터 부분
title = soup.select_one('meta[property="og:title"]')['content']
image = soup.select_one('meta[property="og:image"]')['content']
desc = soup.select_one('meta[property="og:description"]')['content']
# DB에 저장
doc = {
'title':title,
'image':image,
'desc':desc,
'url':url_receive,
'comment':comment_receive
}
db.articles.insert_one(doc)
return jsonify({'msg':'저장이 완료되었습니다!'})하세요