-
Notifications
You must be signed in to change notification settings - Fork 0
/
monitor_grades.py
53 lines (42 loc) · 1.52 KB
/
monitor_grades.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#! /usr/bin/env python3
# -*- coding: utf-8 -*-
# @Author : 张旭
# @Email : [email protected]
# @Blog : https://zhangxu3486432.github.io
# @FileName: monitor_grades.py
# @Time : 2020/2/4
import time
from http import cookiejar
import requests
from bs4 import BeautifulSoup
from settings import MONITOR_GRADES_DELAY
from utils import logger, send_email, email_set, identification
def query_grades(session):
resp = session.get('http://jwxk.ucas.ac.cn/score/yjs/all')
soup = BeautifulSoup(resp.text, 'lxml')
grades = soup.select('#main-content > div > div.m-cbox.m-lgray > div.mc-body > table > tbody > tr')
return grades
def monitor(grades, grades_num):
if len(grades) > grades_num:
grades_num = len(grades)
score_content = ''
for item in grades:
score = item.find_all(name='td', attrs={'class': ''})
if score.__len__() == 0:
continue
score_content += '{0}:{1}\n\n'.format(score[0].text, score[2].text)
logger.info(score_content)
send_email(score_content)
return grades_num
if __name__ == '__main__':
if not email_set():
raise Exception('Please first set email info in settings.py')
session = requests.session()
session.cookies = cookiejar.LWPCookieJar()
session.cookies.load('sep.cookie')
session = identification(session)
grades_num = 0
while True:
grades = query_grades(session)
grades_num = monitor(grades, grades_num)
time.sleep(MONITOR_GRADES_DELAY)