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

Python采集大學(xué)教務(wù)系統(tǒng)成績(jī)單實(shí)戰(zhàn)示例

 更新時(shí)間:2023年04月18日 09:46:36   作者:極客飛虎  
這篇文章主要為大家介紹了Python采集大學(xué)教務(wù)系統(tǒng)成績(jī)單實(shí)戰(zhàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

前言

采集教務(wù)系統(tǒng)成績(jī)單是一個(gè)非常有意義的項(xiàng)目。在現(xiàn)代教育中,教務(wù)系統(tǒng)已經(jīng)成為了學(xué)校管理和教學(xué)工作的重要組成部分。然而,由于各種原因,教務(wù)系統(tǒng)的成績(jī)單并不能下載的,這給我們帶來了很多不必要的麻煩和困擾。因此,采集教務(wù)系統(tǒng)成績(jī)單的項(xiàng)目具有非常重要的意義。

在本文中,我們將詳細(xì)介紹采集教務(wù)系統(tǒng)成績(jī)單的背景和目的,并闡述該項(xiàng)目實(shí)戰(zhàn)所涉及的相關(guān)知識(shí)點(diǎn)和技術(shù)細(xì)節(jié)。

采集數(shù)據(jù)

我們上一篇介紹了,如何采集大家熟悉的百度貼吧的排行榜。今天,我們來學(xué)習(xí)采集教務(wù)系統(tǒng)里面的成績(jī)單,把自己的成績(jī)采集下來。

發(fā)送請(qǐng)求

我們首先確定我們的目標(biāo)網(wǎng)址,對(duì)我們需要獲取的數(shù)據(jù)。

我們要把每一行的數(shù)據(jù)獲取下來,我們接下來用到開發(fā)者工具。我們看成績(jī)是在什么位置。是不是在網(wǎng)頁源代碼中。接下來,我們發(fā)送請(qǐng)求,獲取網(wǎng)頁源代碼。

每個(gè)學(xué)校教務(wù)系統(tǒng)不一樣,但是,原理都是一樣的,我們通過抓包分析,看到,我們學(xué)校把成績(jī)放到了一個(gè)數(shù)據(jù)包里面,一個(gè)學(xué)期一個(gè)數(shù)據(jù)包。

那么,接下來就簡(jiǎn)單了,我們只需要請(qǐng)求數(shù)據(jù),當(dāng)然,我們肯定要加上cookies,畢竟里面包含了我們的登錄信息。

我們看看前面代碼是怎么寫的。

semesters = ["44", "45", "46", "66", "126", ]
for Semester in semesters:
    url = f'http://jwxt.aqnu.edu.cn/student/for-std/grade/sheet/info/73127?semester={Semester}'
    headers = {
        'Cookie': 'cookies',       
    }
    res = requests.get(url, headers=headers)
    print(url, res)

我們這里直接多頁遍歷,我們學(xué)校只做了cookies檢查,對(duì)請(qǐng)求頭沒有要求。

這段代碼首先定義了一個(gè)包含多個(gè)元素的列表 semesters,其中每個(gè)元素表示一個(gè)學(xué)期的信息。然后,使用 for 循環(huán)遍歷列表中的每個(gè)元素,并使用 requests.get() 函數(shù)向指定的 URL 發(fā)送 GET 請(qǐng)求。在請(qǐng)求中,我們?cè)O(shè)置了一些請(qǐng)求頭信息,以確保我們能夠正確地解析 URL 并獲取正確的響應(yīng)。最后,我們打印了 URL、響應(yīng)和響應(yīng)中的內(nèi)容。

獲取數(shù)據(jù)

id2semesters = res.json()['id2semesters']
semester = id2semesters[f'{Semester}']['nameZh']
semesterId2studentGrades = res.json()['semesterId2studentGrades'][f'{Semester}']
for semesterId2studentGrade in semesterId2studentGrades:
    course = semesterId2studentGrade['course']  # 課程
    course_nameZh = course['nameZh']  # 課程名稱
    credits = course['credits']  # 課程學(xué)分
    try:
        courseProperty = semesterId2studentGrade['courseProperty']
        courseProperty_name = courseProperty['name']
    except TypeError:
        courseProperty_name = "NOLL"
    gp = semesterId2studentGrade['gp']  # 績(jī)點(diǎn)
    gaGrade = semesterId2studentGrade['gaGrade']  # 成績(jī)
    gradeDetails = semesterId2studentGrade['gradeDetail']  # 明細(xì)原文
    gradeDetail = re.findall('data-typeid=.*?>(.*?)</span>', gradeDetails)

這段代碼首先從 JSON 響應(yīng)中獲取了學(xué)期和學(xué)生的績(jī)點(diǎn)信息,并將其存儲(chǔ)在變量 semester 和 semesterId2studentGrades 中。然后,使用 for 循環(huán)遍歷 semesterId2studentGrades 中的每個(gè)元素,并使用 course 屬性獲取該學(xué)期的課程信息。接著,使用 course_nameZh 屬性獲取課程名稱,使用 credits 屬性獲取課程學(xué)分,使用 courseProperty_name 屬性獲取課程屬性名稱,如果不存在則返回 "NOLL"。最后,使用 gp 屬性獲取績(jī)點(diǎn),使用 gaGrade 屬性獲取成績(jī),使用 gradeDetail 屬性獲取明細(xì)原文,使用 gradeDetail 屬性獲取明細(xì)原文中的數(shù)據(jù)類型標(biāo)識(shí)符。

這里就是json取值,沒有什么難度,只要寫好這些,就可以獲取到我們想的內(nèi)容,我們看看效果。

保存數(shù)據(jù)

保存數(shù)據(jù)就簡(jiǎn)單了,我們已經(jīng)練習(xí)了很多次。

f = open('個(gè)人成績(jī)單.csv', mode='a', encoding='utf-8_sig', newline='')
csv_writer = csv.DictWriter(f, fieldnames=['學(xué)期','課程名稱', '課程學(xué)分', '課程類型', '成績(jī)', '學(xué)分績(jī)點(diǎn)',
                                           '成績(jī)明細(xì)'])

這段代碼首先打開一個(gè)名為 personal_scores.csv 的文件,并指定使用 a 模式打開文件。然后,使用 csv.DictWriter() 函數(shù)創(chuàng)建一個(gè) CSV 寫入器,并指定要寫入的列名。在這個(gè)例子中,我們指定了 fieldnames 參數(shù),它包含了我們要寫入的列名。

接下來,我們使用 csv_writer.writeheader() 方法寫入列名。這個(gè)方法會(huì)將列名寫入文件的第一行。

最后,我們使用 csv_writer.writerow() 方法寫入數(shù)據(jù)。在這個(gè)例子中,我們寫入了一個(gè)包含學(xué)期、課程名稱、課程學(xué)分、課程類型、成績(jī)、學(xué)分績(jī)點(diǎn)和成績(jī)明細(xì)的列表。

接下來就是寫入字典,保存下來。

dit = {
    '學(xué)期': semester,
    '課程名稱': course_nameZh,
    '課程學(xué)分': credits,
    '課程類型': courseProperty_name,
    '成績(jī)': gaGrade,
    '學(xué)分績(jī)點(diǎn)': gp,
    '成績(jī)明細(xì)': gradeDetail,
}
csv_writer.writerow(dit)

這段代碼使用 csv_writer.writerow() 方法將 dit 字典寫入 CSV 文件中。fieldnames 參數(shù)指定了要寫入的列名。在這個(gè)例子中,我們指定了 ['學(xué)期','課程名稱', '課程學(xué)分', '課程類型', '成績(jī)', '學(xué)分績(jī)點(diǎn)', '成績(jī)明細(xì)']。

總結(jié)

總之,采集教務(wù)系統(tǒng)成績(jī)單是一個(gè)非常有意義的項(xiàng)目實(shí)戰(zhàn),它不僅可以采集成績(jī)單,還可以提升我們采集數(shù)據(jù)的能力。在實(shí)現(xiàn)過程中,我們需要注意數(shù)據(jù)的準(zhǔn)確性和完整性,并采取必要的措施來保證項(xiàng)目的安全性和可靠性。

以上就是Python采集大學(xué)教務(wù)系統(tǒng)成績(jī)單實(shí)戰(zhàn)示例的詳細(xì)內(nèi)容,更多關(guān)于Python采集教務(wù)系統(tǒng)成績(jī)單的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 詳解Pycharm出現(xiàn)out of memory的終極解決方法

    詳解Pycharm出現(xiàn)out of memory的終極解決方法

    這篇文章主要介紹了詳解Pycharm出現(xiàn)out of memory的終極解決方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-03-03
  • python 插入Null值數(shù)據(jù)到Postgresql的操作

    python 插入Null值數(shù)據(jù)到Postgresql的操作

    這篇文章主要介紹了python 插入Null值數(shù)據(jù)到Postgresql的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03
  • 帶你用Python實(shí)現(xiàn)Saga 分布式事務(wù)的方法

    帶你用Python實(shí)現(xiàn)Saga 分布式事務(wù)的方法

    在這篇文章里,我們介紹了 SAGA 的理論知識(shí),也通過一個(gè)例子,完整給出了編寫一個(gè) SAGA 事務(wù)的過程,涵蓋了正常成功完成,異常情況,以及成功回滾的情況,需要的朋友參考下吧
    2021-09-09
  • Python lxml庫(kù)的簡(jiǎn)單介紹及基本使用講解

    Python lxml庫(kù)的簡(jiǎn)單介紹及基本使用講解

    lxml是XML和HTML的解析器,其主要功能是解析和提取XML和HTML中的數(shù)據(jù),本文重點(diǎn)給大家介紹Python lxml庫(kù)的簡(jiǎn)單介紹及基本使用講解,感興趣的朋友跟隨小編一起看看吧
    2020-12-12
  • django框架基于模板 生成 excel(xls) 文件操作示例

    django框架基于模板 生成 excel(xls) 文件操作示例

    這篇文章主要介紹了django框架基于模板 生成 excel(xls) 文件操作,結(jié)合具體實(shí)例形式分析了Django框架基于模板生成excel的實(shí)現(xiàn)步驟與相關(guān)操作技巧,需要的朋友可以參考下
    2019-06-06
  • 基于Python pyecharts實(shí)現(xiàn)多種圖例代碼解析

    基于Python pyecharts實(shí)現(xiàn)多種圖例代碼解析

    這篇文章主要介紹了基于Python pyecharts實(shí)現(xiàn)多種圖例代碼解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-08-08
  • python異步爬蟲之多線程

    python異步爬蟲之多線程

    這篇文章主要介紹了python異步爬蟲之多線程,多線程可以為相關(guān)阻塞的操作單獨(dú)開啟線程或者進(jìn)程,阻塞操作可以異步執(zhí)行,但是無法無限制開啟多線程或多進(jìn)程,下面我們一起學(xué)習(xí)詳細(xì)內(nèi)容,需要的朋友可以參考一下
    2022-02-02
  • pytorch 批次遍歷數(shù)據(jù)集打印數(shù)據(jù)的例子

    pytorch 批次遍歷數(shù)據(jù)集打印數(shù)據(jù)的例子

    今天小編就為大家分享一篇pytorch 批次遍歷數(shù)據(jù)集打印數(shù)據(jù)的例子,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • Python使用Numpy實(shí)現(xiàn)Kmeans算法的步驟詳解

    Python使用Numpy實(shí)現(xiàn)Kmeans算法的步驟詳解

    將物理或抽象對(duì)象的集合分成由類似的對(duì)象組成的多個(gè)類的過程被稱為聚類。這篇文章主要介紹了Python使用Numpy實(shí)現(xiàn)Kmeans算法,需要的朋友可以參考下
    2021-11-11
  • Python基于OpenCV的視頻圖像處理詳解

    Python基于OpenCV的視頻圖像處理詳解

    OpenCV是一個(gè)開源的,跨平臺(tái)的計(jì)算機(jī)視覺庫(kù),它采用優(yōu)化的C/C++代碼編寫,能夠充分利用多核處理器的優(yōu)勢(shì)。本文主要和大家來聊聊基于Python?OpenCv的視頻圖像處理,感興趣的可以了解一下
    2023-02-02

最新評(píng)論

定兴县| 老河口市| 开阳县| 通渭县| 无极县| 阳朔县| 孟州市| 根河市| 滦平县| 辽源市| 康平县| 平舆县| 黎川县| 瑞昌市| 锦州市| 特克斯县| 瑞丽市| 兴国县| 阿城市| 罗甸县| 甘德县| 岱山县| 万源市| 内江市| 海安县| 赫章县| 京山县| 苏州市| 射阳县| 上饶县| 乌拉特中旗| 定边县| 山东省| 闽清县| 赞皇县| 辽阳市| 余江县| 荃湾区| 密云县| 乌拉特中旗| 辛集市|