python小爬虫—获取学校教务处成绩

本文介绍了如何使用Python进行网络爬虫,以获取个人在学校教务处的成绩信息。首先分析了成绩管理系统网页结构,发现采用frame标签,并涉及POST提交的表单数据。随后,作者分享了模拟登录并抓取数据的代码片段。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

开始想自己计算一下绩点,所以第一个小爬虫就从抓取自己成绩开始

1.工具: chrome浏览器 vscode
2.先来分析一下学校教务处成绩管理系统的结构,用的竟然是frame标签!!首先是一个输入学号的表单,找到表单后发现是一个post提交
这里写图片描述
这里是提交的数据
这里写图片描述

3.找到这些模拟登陆就变得很容易了,下面贴代码

import cgi
import cgitb
import json
import io
import pandas
import requests
from bs4 import BeautifulSoup
import json

form=cgi.FieldStorage()
studentId=form.getvalue('id')



def requestsData(url,headers,data):
    r=requests.post(url,headers=headers,data=data)
    return r


def htmlParser(r):
    soup=BeautifulSoup(r.text,'lxml')
    grades=soup.find_all('table')[3]
    tr_list=grades.find_all('tr')
    td=[tr.find_all('td') for tr in tr_list][1:]
    for data in td:
        a={"subject_id":data[1].text.lstrip('\xa0'),"subject_name":data[5].text.lstrip('\xa0'),"subject_xf":data[7].text.lstrip('\xa0'),"subject_grade":data[9].text.lstrip('\xa0')}
        yield(a)

def fileWrite(data):
    for a in data:
         with open('file.txt','a',encoding='utf-8') as f:
            f.write(json.dumps(a,ensure_ascii=False)+'\n')
            f.close()

def main():
    url='http://210.44.176.116/cjcx/zcjcx_list.php'
    headers={
        'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.78 Safari/537.36'
    }
    data={
        'post_xuehao':'学号'
    }
    html=requestsData(url,headers,data)
    fileWrite(htmlParser(html))


main()
if __name__ == '__main__':
    main()

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值