最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

用Python獲取智慧校園每日課表并自動發(fā)送至郵箱

 更新時間:2021年05月28日 09:46:19   作者:Smartloe  
很多小伙伴們都在為查看智慧校園課表而煩惱,今天特地整理了這篇文章,不僅可以用Python獲取智慧校園每日課表,還會自動發(fā)至你郵箱,需要的朋友可以參考下

一、準(zhǔn)備工作

1.1 觀察登陸界面

image-20210517162309331

我很很容易發(fā)現(xiàn),當(dāng)我們輸入了賬號與密碼之后,就會出現(xiàn)這么一個鏈接,Response返回的是false:

http://sso.cqcet.edu.cn/verificationCode?userCode={username}

此處的username指的是你的智慧校園賬號false表示登入時不需要輸入驗證碼;當(dāng)Response返回的是true時,需要輸入驗證碼。

1.2 觀察登陸請求過程

image-20210517163738181

我們可以發(fā)現(xiàn),Request URL為http://sso.cqcet.edu.cn/uaa/login_process

其攜帶的表單數(shù)據(jù)為:

image-20210517164100758

1.3 觀察訪問課表的url請求

找到課表所在,點擊它,你會發(fā)現(xiàn)其Request URL為http://ossc.cqcet.edu.cn/api/schedule/query。你可以在Preview發(fā)現(xiàn)課表信息。

image-20210517164841771

但直接雙擊打開此鏈接會報如下錯誤:

image-20210517164603506

原因:訪問此鏈接需要攜帶請求負(fù)載

image-20210517164750907

Date表示查詢的具體某天的課表

二、代碼實現(xiàn)

2.1 安裝相應(yīng)的依賴庫

鍵盤按下Win+R調(diào)出如下界面:

image-20210517165443143

輸入cmd,進(jìn)入如下界面:

image-20210517165603495

輸入pip install 庫名,即可安裝。

2.2 導(dǎo)入相應(yīng)的依賴庫

import json
import requests
import uuid # 用于獲取驗證碼的,暫時可以不看
import yagmail # 用于發(fā)送郵件
import random
import datetime #用于獲取
from fake_useragent import UserAgent # 用于獲取隨機(jī)的UserAgent

2.3 一些賬號密碼的寫入

username = '********' # 賬號
passwd = '*********' # 密碼
now_time = datetime.datetime.now ().strftime('%Y-%m-%d') # 當(dāng)天日期
contents = '' # 后面用于存儲課表內(nèi)容

# 隨機(jī)生成uuid
uuid = uuid.uuid4()


# 隨機(jī)UA
def get_random_ua():
    ua = UserAgent()
    return ua.random

2.4 url匯總及其他準(zhǔn)備

# url匯總
code_url = f'http://sso.cqcet.edu.cn/validata/code/{uuid}'  # 驗證碼獲取url
url = f'http://sso.cqcet.edu.cn/verificationCode?userCode={username}'  # 判斷是否需要輸入驗證碼url
login_url = 'http://sso.cqcet.edu.cn/uaa/login_process'  # 登陸url
info_url = 'http://ossc.cqcet.edu.cn/getUserInfo'  # 獲取個人信息url
schedule_url = 'http://ossc.cqcet.edu.cn/api/schedule/query'  # 課表url

# 模擬登陸
headers = {
    'User-Agent': get_random_ua()
}

session = requests.session()


# 驗證碼圖片下載
def getImgCode():
    img_name = str(uuid) + '.jpg'
    img_data = requests.get(url=code_url, headers=headers).content
    with open(img_name, 'wb') as fp:
        fp.write(img_data)
        print('驗證碼獲取成功,請手動識別!')

2.5 具體過程

# 驗證碼圖片下載
def getImgCode():
    img_name = str(uuid) + '.jpg'
    img_data = requests.get(url=code_url, headers=headers).content
    with open(img_name, 'wb') as fp:
        fp.write(img_data)
        print('驗證碼獲取成功,請手動識別!')


# 判斷是否需要輸入驗證碼
isCode = session.get(url=url, headers=headers).text

if isCode == 'true':
    getImgCode()
    # 獲取img_code
    img_code = input('請輸入驗證碼:')
else:
    img_code = ''

data = {
    'type': '1',
    'deviceId': str(uuid),
    'username': username,
    'password': passwd,
    'img_code': img_code
}
response = session.post(url=login_url, data=data)
login_text = response.text
# print(response.status_code)  # 返回200表示模擬登陸成功了!

# 個人信息獲取
info = session.get(url=info_url).text
info_data = json.loads(info)  # 將json字符串轉(zhuǎn)為字典
# print(info_data)
# pprint.pprint(info_data)

contents += '親愛的' + info_data['user']['name'] + '同學(xué):\n'

# 課表獲取
schedule_json = {
    'endDate': now_time,
    'limit': '10',
    'page': '1',
    'startDate': now_time,
    'type': '0'
}

schedule = session.post(url=schedule_url, json=schedule_json).text
schedule_data = json.loads(schedule)  # 將json字符串轉(zhuǎn)為字典
# pprint.pprint(len(schedule_data['data'])) # 獲取數(shù)組長度
# 判斷是否有課
if len(schedule_data['data']) == 0:
    re_list = ['本來無一物,何處惹塵埃~', '今天沒課,放松一下吧!', '小主,今日無課~\n可想好游玩之地?', '今日無課,無需早起~']
    contents += '        ' + re_list[random.randint(0, 3)]
else:
    contents += '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;今日課表請查收~\n<hr/><table border="1" cellpadding="2" ' \
                'cellspacing="0"><tr><th>上課時間</th><th>課程名稱</th><th>授課教師</th><th>上課地點</th></tr>'
    for course_table in schedule_data['data']:
        # print(course_table)
        time = '<tr><td>' + course_table['date'] + ' ' + course_table['time'] + '</td>'
        title = '<td>' + course_table['activity']['title'] + '</td>'
        teacher = '<td>' + course_table['activity']['remarks'] + '</td>'
        classroom = '<td>' + course_table['activity']['address'] + '</td></tr>'
        contents += time + title + teacher + classroom
contents += '</table>'

2.6 將獲得的課表信息用郵件的方式發(fā)給自己

# 發(fā)送郵件函數(shù)
def to_mail(content):
    yag = yagmail.SMTP(
        user='sm*****e@qq.com',
        host='smtp.qq.com',
        password="pdxj**********", # 注意此處的密碼不是你的郵箱密碼,具體是什么??梢匀グ俣纫幌聐agmail的使用。
        smtp_ssl=True)
    yag.send(to=['3000004806@qq.com','s*****oe@qq.com'],
             subject='小主,你的課表來啦~',
             contents=contents)
             
to_mail(contents)  # 運(yùn)行郵件發(fā)送函數(shù)

三、效果展示

在這里插入圖片描述

到此這篇關(guān)于用Python獲取智慧校園每日課表并自動發(fā)送至郵箱的文章就介紹到這了,更多相關(guān)Python獲取課表后發(fā)送至郵箱內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python實現(xiàn)簡單學(xué)生信息管理系統(tǒng)

    python實現(xiàn)簡單學(xué)生信息管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了python簡單的學(xué)生信息管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-04-04
  • python實現(xiàn)自動清理文件夾舊文件

    python實現(xiàn)自動清理文件夾舊文件

    這篇文章主要為大家詳細(xì)介紹了python實現(xiàn)自動清理文件夾舊文件,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-05-05
  • 深入講解Python中的迭代器和生成器

    深入講解Python中的迭代器和生成器

    這篇文章主要介紹了Python中的迭代器和生成器,涉及到Python中很多重要的特性,需要的朋友可以參考下
    2015-10-10
  • 詳解python之協(xié)程gevent模塊

    詳解python之協(xié)程gevent模塊

    這篇文章主要介紹了詳解python之協(xié)程gevent模塊,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-06-06
  • 基于Python實現(xiàn)Markdown轉(zhuǎn)ePub

    基于Python實現(xiàn)Markdown轉(zhuǎn)ePub

    數(shù)字閱讀ePub格式因其良好的兼容性和閱讀體驗,已經(jīng)成為電子書的主流格式之一,而Markdown作為一種輕量級標(biāo)記語言,以其簡潔易用的特點深受技術(shù)寫作者喜愛,下面我們來看看如何實現(xiàn)二者之間的格式轉(zhuǎn)換吧
    2025-04-04
  • python實現(xiàn)畫五角星和螺旋線的示例

    python實現(xiàn)畫五角星和螺旋線的示例

    今天小編就為大家分享一篇python實現(xiàn)畫五角星和螺旋線的示例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01
  • Python切片知識解析

    Python切片知識解析

    這篇文章主要介紹了Python切片知識解析的相關(guān)資料,需要的朋友可以參考下
    2016-03-03
  • 如何利用Python寫個坦克大戰(zhàn)

    如何利用Python寫個坦克大戰(zhàn)

    這篇文章主要給大家介紹了關(guān)于如何利用Python寫個坦克大戰(zhàn)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • python?flask之模板繼承方式

    python?flask之模板繼承方式

    這篇文章主要介紹了python?flask之模板繼承方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • 淺談Python里面None True False之間的區(qū)別

    淺談Python里面None True False之間的區(qū)別

    這篇文章主要介紹了淺談Python里面None True False之間的區(qū)別,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-07-07

最新評論

和静县| 津南区| 济宁市| 屏山县| 舟曲县| 伊金霍洛旗| 陆河县| 驻马店市| 邓州市| 临沂市| 阜阳市| 建昌县| 竹北市| 五指山市| 常德市| 嫩江县| 富宁县| 湘乡市| 双城市| 晴隆县| 庆元县| 日喀则市| 靖西县| 鹿泉市| 翁源县| 房产| 阳新县| 临猗县| 株洲市| 巴彦淖尔市| 布尔津县| 平南县| 巴林右旗| 延长县| 伊金霍洛旗| 玉树县| 凤城市| 垦利县| 龙州县| 宜川县| 岳普湖县|