91精产品自偷自偷综合官网版下载-91精产品自偷自偷综合下-91精品-91精品91久久久-91精品成人-91精品成人www

網站建設資訊

NEWS

網站建設資訊

用Python查成績的方法

小編給大家分享一下用Python查成績的方法,希望大家閱讀完這篇文章后大所收獲,下面讓我們一起去探討吧!

成都創新互聯公司主營西安網站建設的網絡公司,主營網站建設方案,重慶APP軟件開發,西安h5微信小程序開發搭建,西安網站營銷推廣歡迎西安等地區企業咨詢

怎么用Python查成績

用Python查成績可以使用requests庫,模擬登錄教務系統,然后通過正則查詢成績信息即可。

設計思路:

設計思路很簡單,首先對已有的成績進行處理,變為list集合,然后定時爬取教務系統查成績的頁面,對爬取的成績也處理成list集合,如果newList的長度增加了,就找出增加的部分,并通過郵件通知我。

推薦學習《Python教程》。

腳本運行效果:

用Python查成績的方法

發送郵件通知:

用Python查成績的方法

代碼如下:

import datetime
import time
from email.header import Header
import requests
import re
import smtplib
from email.mime.text import MIMEText
from bs4 import BeautifulSoup

def listener():
    #在這里我通過模擬登陸的方式登陸
    #一般來說這里填寫的是username跟password
    #但我們學校后臺將用戶名和密碼進行了加密
    #通過觀察瀏覽器的請求數據跟頁面源碼猜出學校后臺的加密方式
    data={
        #出于學校安全考慮,這里就不給出加密方式了
        'encoded':'xxxxxxxxxxxxxxxxxxx'
    }
    session = requests.Session()
    session.post('http://jwc.sgu.edu.cn/jsxsd/xk/LoginToXk',data=data)
    #請求2019-2020-1學期的所有成績
    r_data = {
        'kksj': '2019-2020-1',
        'kcxz': '',
        'kcmc': '',
        'xsfs': 'all'
    }
    r = session.post('http://jwc.sgu.edu.cn/jsxsd/kscj/cjcx_list', data=r_data)
    #對爬回來數據進行封裝
    soup = BeautifulSoup(r.text, 'html.parser')
    #返回已有的成績列表
    oldList = toList(soup)
    max = len(oldList)
    #這里用死循環定時爬取成績頁面分析是否分布新成績
    while (True):
        #post跟get方式不能亂用,不然數據會出錯
        r = session.post('http://jwc.sgu.edu.cn/jsxsd/kscj/cjcx_list',data=r_data)
        soup = BeautifulSoup(r.text, 'lxml')
        #print(soup.prettify())
        length = len(soup.find_all(string=re.compile('2019-2020-1')))-1
        print("course_length: ",length)
        if (r.status_code == 200 and length != 0):
            if (length > max):
                #查詢新出的成績列表
                newlist = toList(soup)
                #獲取兩個列表不同之處,不同的就是新成績
                diflist = compareTwoList(oldList, newlist)
                oldList=newlist
                if diflist=='':
                    send("unkowned Error","unkowned Error")
                else:
                    #有新成績了,發送郵件通知我
                    send('you have new course sorce!!', diflist)
                max = length
            print('last running time was:',datetime.datetime.now())
            #定時作用,500s查一次
            time.sleep(500)
        else:
            # 發送郵件斷開連接了 print("had disconnected...")
            send("your server is disconnected!!!","your server is disconnected!!!")
            break

def send(title,msg):
    mail_host = 'smtp.qq.com'
    # 你的qq郵箱名,沒有.com
    mail_user = '你的qq郵箱名,沒有.com'
    # 密碼(部分郵箱為授權碼)
    mail_pass = '授權碼'
    # 郵件發送方郵箱地址
    sender = '發送方郵箱地址'
    # 郵件接受方郵箱地址,注意需要[]包裹,這意味著你可以寫多個郵件地址群發
    receivers = ['yoletpig@qq.com']

    # 設置email信息
    # 郵件內容設置
    message = MIMEText(msg, 'plain', 'utf-8')
    # 郵件主題
    message['Subject'] = Header(title,'utf-8')
    # 發送方信息
    message['From'] = sender
    # 接受方信息
    message['To'] = receivers[0]

    # 登錄并發送郵件
    try:
        # smtpObj = smtplib.SMTP()
        # # 連接到服務器
        # smtpObj.connect(mail_host, 25)
        smtpObj = smtplib.SMTP_SSL(mail_host)
        # 登錄到服務器
        smtpObj.login(mail_user, mail_pass)
        # 發送
        smtpObj.sendmail(
            sender,receivers,message.as_string())
        # 退出
        smtpObj.quit()
        print('success')
    except smtplib.SMTPException as e:
        print('error', e)  # 打印錯誤

def toList(soup):
    flag = True
    list = []
    strs = ''
    #對tr標簽下的td進行遍歷并取值
    for tr in soup.find_all('tr'):
        if flag:
            flag = False;
            continue
        i = 1
        for td in tr.stripped_strings:
            if (i == 1 or i == 2):
                i += 1
                continue
            strs += "_" + td
            i += 1
        list.append(strs)
        strs = ''
    return list

def compareTwoList(oldList,newList):
    diflist=''
    for sub in newList:
        #判斷是否唯一
        if(oldList.count(sub)==0):
            diflist = sub
            break
    return diflist

if __name__ == '__main__':
    listener()

看完了這篇文章,相信你對用Python查成績的方法有了一定的了解,想了解更多相關知識,歡迎關注創新互聯行業資訊頻道,感謝各位的閱讀!


網頁標題:用Python查成績的方法
新聞來源:http://www.yuzhuanjia.cn/article/jiiege.html
主站蜘蛛池模板: 国产爱豆| 国产av一区二区三区无码野战 | 午夜激情视频免费 | 99精品视频只99有精品 | 99视频99| 91久久人人爽亚 | 午夜在线观看高清视频 | 91精品啪在线观看国产线免费 | 午夜a无码v视频 | 午夜日b视频 | 丰满人妻av无码区 | 91久久麻豆精品 | 囯产亚洲高清一二三区三区 | 丰满肥女巨肥bw | 97国产精华最好 | 囯产精品一品二区三区 | av一区二区三区不卡在线 | 91久久久久久一区黄无码国产a真人一级无码毛片一区二区 | 国产sm调教在线观看 | 午夜看一级特黄a大片 | 大地影院日本高清免费完整版 | 91免费视频在线观看欧美电影在线观看 | 91精品美女视频 | 班长你轻点灬爽灬宝贝一 | 成人看片 | 海角国精产品一区一区三区糖心行业总结 | 高清无码无遮挡在 | 一区二区三区国产精华液区别 | 91精产品在自偷自偷综合 | 91精品国产福利在线观看雪梨 | av无码人妻无码男人的天堂 | 99久久精品费精品国产红杏 | 午夜视频免费试看 | 91制服丝袜在线 | 囯产亚州成给综合 | 囯产自拍亚洲精品 | 福利二区三区第1页 | 午夜激情视频 | av无码激情在 | 暴露放荡的娇妻 | 日韩av无码伊人 |