中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python怎么采集大學教務系統成績單

發布時間:2023-04-18 10:33:48 來源:億速云 閱讀:161 作者:iii 欄目:開發技術

本文小編為大家詳細介紹“Python怎么采集大學教務系統成績單”,內容詳細,步驟清晰,細節處理妥當,希望這篇“Python怎么采集大學教務系統成績單”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。

采集數據

發送請求

我們首先確定我們的目標網址,對我們需要獲取的數據。

Python怎么采集大學教務系統成績單

我們要把每一行的數據獲取下來,我們接下來用到開發者工具。我們看成績是在什么位置。是不是在網頁源代碼中。接下來,我們發送請求,獲取網頁源代碼。

每個學校教務系統不一樣,但是,原理都是一樣的,我們通過抓包分析,看到,我們學校把成績放到了一個數據包里面,一個學期一個數據包。

Python怎么采集大學教務系統成績單

那么,接下來就簡單了,我們只需要請求數據,當然,我們肯定要加上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)

我們這里直接多頁遍歷,我們學校只做了cookies檢查,對請求頭沒有要求。

這段代碼首先定義了一個包含多個元素的列表 semesters,其中每個元素表示一個學期的信息。然后,使用 for 循環遍歷列表中的每個元素,并使用 requests.get() 函數向指定的 URL 發送 GET 請求。在請求中,我們設置了一些請求頭信息,以確保我們能夠正確地解析 URL 并獲取正確的響應。最后,我們打印了 URL、響應和響應中的內容。

獲取數據

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']  # 課程學分
    try:
        courseProperty = semesterId2studentGrade['courseProperty']
        courseProperty_name = courseProperty['name']
    except TypeError:
        courseProperty_name = "NOLL"
    gp = semesterId2studentGrade['gp']  # 績點
    gaGrade = semesterId2studentGrade['gaGrade']  # 成績
    gradeDetails = semesterId2studentGrade['gradeDetail']  # 明細原文
    gradeDetail = re.findall('data-typeid=.*?>(.*?)</span>', gradeDetails)

這段代碼首先從 JSON 響應中獲取了學期和學生的績點信息,并將其存儲在變量 semester 和 semesterId2studentGrades 中。然后,使用 for 循環遍歷 semesterId2studentGrades 中的每個元素,并使用 course 屬性獲取該學期的課程信息。接著,使用 course_nameZh 屬性獲取課程名稱,使用 credits 屬性獲取課程學分,使用 courseProperty_name 屬性獲取課程屬性名稱,如果不存在則返回 "NOLL"。最后,使用 gp 屬性獲取績點,使用 gaGrade 屬性獲取成績,使用 gradeDetail 屬性獲取明細原文,使用 gradeDetail 屬性獲取明細原文中的數據類型標識符。

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

Python怎么采集大學教務系統成績單

保存數據

保存數據就簡單了,我們已經練習了很多次。

f = open('個人成績單.csv', mode='a', encoding='utf-8_sig', newline='')
csv_writer = csv.DictWriter(f, fieldnames=['學期','課程名稱', '課程學分', '課程類型', '成績', '學分績點',
                                           '成績明細'])

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

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

最后,我們使用 csv_writer.writerow() 方法寫入數據。在這個例子中,我們寫入了一個包含學期、課程名稱、課程學分、課程類型、成績、學分績點和成績明細的列表。

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

dit = {
    '學期': semester,
    '課程名稱': course_nameZh,
    '課程學分': credits,
    '課程類型': courseProperty_name,
    '成績': gaGrade,
    '學分績點': gp,
    '成績明細': gradeDetail,
}
csv_writer.writerow(dit)

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

讀到這里,這篇“Python怎么采集大學教務系統成績單”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

宁夏| 芷江| 宜阳县| 伊通| 上思县| 佛冈县| 舒兰市| 德惠市| 治县。| 金寨县| 曲靖市| 武宁县| 察哈| 平和县| 锦屏县| 吐鲁番市| 吴江市| 桐梓县| 嘉义市| 平遥县| 银川市| 突泉县| 缙云县| 米泉市| 渝中区| 岱山县| 呼和浩特市| 洪洞县| 安塞县| 安龙县| 菏泽市| 湾仔区| 东乡族自治县| 新闻| 德令哈市| 北辰区| 图们市| 鲜城| 鄂托克旗| 乌苏市| 新兴县|