내일배움캠프 11일차 개발일지

2021. 9. 29. 23:38스파르타코딩클럽

# TIL

 

주기적 실행을 위한 flask-apscheduler 라이브러리
참고  https://viniciuschiele.github.io/flask-apscheduler/rst/usage.html
만들었던 사진저장 크롤링 함수를 서버에 올렸을때 주기적으로 실행시켜줄수 있게 만들어준다.

import time
from flask_apscheduler import APScheduler
import urllib

class Config:
    SCHEDULER_API_ENABLED = True
    
scheduler = APScheduler()
scheduler.init_app(app)
scheduler.start()

@scheduler.task('interval', id='autoPiccraw', seconds=3600, misfire_grace_time=900)
def autoPiccraw():
    getPic()
    
def getPic():
    users = list(db.userInfo.find({}, {'_id': False}))
    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'}

    for one in users:
        name = one['name']
        url = one['url']
        data = requests.get(url, headers=headers)
        soup = BeautifulSoup(data.text, 'html.parser')
        image = soup.select_one('meta[property="og:image"]')['content']

        imgUrl = image

        # urlretrieve는 다운로드 함수
        urllib.request.urlretrieve(imgUrl, "static/images/" + name + '.jpg')

        db.userInfo.update_one({'name': name}, {'$set': {'pic': '../static/images/' + name + '.jpg'}})​

'스파르타코딩클럽' 카테고리의 다른 글

3주차 WIL  (0) 2021.10.07
내일배움캠프 12일차 개발일지  (4) 2021.09.29
내일배움캠프 10일차 개발일지  (0) 2021.09.29
2주차 WIL  (0) 2021.09.26
내일배움캠프 9일차 개발일지  (0) 2021.09.25