
현재 두개의 파이선파일로 출력하고있습니다.
하나로 합치면 오류가나서 이부분 해결 부탁드립니다 ㅜ
하나는 메인, 기사부분파이선이고
하나는 순위부분 크롤링 입니다~!
하나로 합치기만 하면 크롤링이 정상적으로 되지않아
데이터 업그레이드가 되지않습니다!
from flask import Flask, render_template, request, jsonify
app = Flask(__name__)
import requests
from bs4 import BeautifulSoup
from pymongo import MongoClient
import certifi
ca = certifi.where();
client = MongoClient('mongodb+srv://hoisohee:dladnrgus77@cluster0.yfexp.mongodb.net/Cluster0?retryWrites=true&w=majority', tlsCAFile=ca)
db = client.dbsparta
@app.route('/')
def home():
return render_template('index.html')
@app.route("/bsnews", methods=["POST"])
def news_post():
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)
soup = BeautifulSoup(data.text, 'html.parser')
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']
doc = {
'title': title,
'image': image,
'desc': desc,
'comment':comment_receive
}
db.bsnews.insert_one(doc)
return jsonify({'msg':'저장완료!'})
@app.route("/bsnewsrank", methods=["POST"])
def news_postrank(i):
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://www.koreabaseball.com/TeamRank/TeamRank.aspx', headers=headers)
soup = BeautifulSoup(data.text, 'html.parser')
rank = soup.select('#cphContents_cphContents_cphContents_udpRecord > table > tbody ')
print("rank : ", rank)
for ranks in rank:
teamrank = ranks.select_one('tr:nth-child(1) > td:nth-child(1)').text
teamtitle = ranks.select_one('td:nth-child(2)').text
teampoint = ranks.select_one(' td:nth-child(7)').text
teamgame = ranks.select_one('td:nth-child(8)').text
doc = {
'teamrank': teamrank,
'teamtitle': teamtitle,
'teamgame': teamgame,
'teampoint': teampoint
}
print("doc:" , doc)
db.bsrank.insert_one(doc)
rank_list = list(db.bsrank.find({}, {'_id': False}))
print("rank_list:", rank_list)
return jsonify({'msg': '저장완료!'})
@app.route("/bsnews", methods=["GET"])
def news_get():
sport_list = list(db.bsnews.find({}, {'_id': False}))
return jsonify({'bsnews':sport_list})
@app.route("/bsnewsrank", methods=["GET"])
def newsrank_get():
rank_list = list(db.bsrank.find({}, {'_id': False}))
print("rank_list",rank_list)
return jsonify({'bsnewsrank': rank_list})
if __name__ == '__main__':
app.run('0.0.0.0', port=5000, debug=True)
