python 爬取吉首大学网站成绩单

本攻略将介绍如何使用Python爬虫爬取吉首大学教务系统中的成绩单。我们将使用requests库和BeautifulSoup库获取成绩单数据,并使用pandas库将数据保存到CSV文件中。我们将提供两个示例代码,分别用于获取单个学期和多个学期的成绩单数据。

安装所需库

在开始前,我们需要安装requests、BeautifulSoup和pandas库。我们可以使用命令在命令行中安装这些库:

pip install requests
pip install beautifulsoup4
pip install pandas

登录教务系统

我们需要先登录教务系统,获取cookie和表单数据。以下是一个示例代码,用于登录教务系统:

import requests
from bs4 import BeautifulSoup

login_url = 'http://jwgl.jsu.edu.cn/default2.aspx'
response = requests.get(login_url)
soup = BeautifulSoup(response.text, 'html.parser')
view_state = soup.find('input', {'name': '__VIEWSTATE'})['value']
view_state_generator = soup.find('input', {'name': '__VIEWSTATEGENERATOR'})['value']
event_validation = soup.find('input', {'name': '__EVENTVALIDATION'})['value']
login_data = {
    '__VIEWSTATE': view_state,
    '__VIEWSTATEGENERATOR': view_state_generator,
    '__EVENTVALIDATION': event_validation,
    'txtUserName': 'your_username',
    'TextBox2': 'your_password',
    'Button1': '',
}
response = requests.post(login_url, data=login_data)

在上面的代码中,我们使用requests库的get方法获取了登录页面的网页内容,并使用BeautifulSoup库解析了网页内容。我们使用find方法获取了表单数据,并使用字典将表单数据保存到login_data中。我们使用requests库的post方法提交了表单数据,以登录教务系统。

获取成绩单数据

我们将使用requests库和BeautifulSoup库获取成绩单数据。以下是一个示例代码,用于获取单个学期的成绩单数据:

import requests
from bs4 import BeautifulSoup
import pandas as pd

score_url = 'http://jwgl.jsu.edu.cn/xscj_gc.aspx?xh=your_student_id&xm=your_name&gnmkdm=N121605'
response = requests.get(score_url)
soup = BeautifulSoup(response.text, 'html.parser')
table = soup.find('table', {'class': 'datelist'})
rows = table.find_all('tr')
data = []
for row in rows[1:]:
    cols = row.find_all('td')
    cols = [col.text.strip() for col in cols]
    data.append(cols)
df = pd.DataFrame(data, columns=['课程名称', '课程性质', '学分', '成绩', '绩点', '考试时间', '课程代码', '课序号'])
df.to_csv('score.csv', index=False)

在上面的代码中,我们使用requests库的get方法获取了成绩单页面的网页内容,并使用BeautifulSoup库解析了网页内容。我们使用find方法获取了成绩单表格,并使用find_all方法获取了表格中的所有行。我们使用循环遍历了所有行,并使用find_all方法获取了每行中的所有列。我们使用列表和字典将数据保存到CSV文件中。

以下是另一个示例代码,用于获取多个学期的成绩单数据:

import requests
from bs4 import BeautifulSoup
import pandas as pd

score_urls = [
    'http://jwgl.jsu.edu.cn/xscj_gc.aspx?xh=your_student_id&xm=your_name&gnmkdm=N121605',
    'http://jwgl.jsu.edu.cn/xscj_gc.aspx?xh=your_student_id&xm=your_name&gnmkdm=N121605&ddbh=002',
    'http://jwgl.jsu.edu.cn/xscj_gc.aspx?xh=your_student_id&xm=your_name&gnmkdm=N121605&ddbh=003',
]
data = []
for score_url in score_urls:
    response = requests.get(score_url)
    soup = BeautifulSoup(response.text, 'html.parser')
    table = soup.find('table', {'class': 'datelist'})
    rows = table.find_all('tr')
    for row in rows[1:]:
        cols = row.find_all('td')
        cols = [col.text.strip() for col in cols]
        data.append(cols)
df = pd.DataFrame(data, columns=['课程名称', '课程性质', '学分', '成绩', '绩点', '考试时间', '课程代码', '课序号'])
df.to_csv('score.csv', index=False)

在上面的代码中,我们使用循环遍历了所有成绩单页面,并使用requests库的get方法获取了每个页面的网页内容,并使用BeautifulSoup库解析了网页内容。我们使用find方法获取了成绩单表格,并使用find_all方法获取了表格中的所有行。我们使用循环遍历了所有行,并使用find_all方法获取了每行中的所有列。我们使用列表和字典将数据保存到CSV文件中。

总结

本攻略介绍了如何使用Python爬虫爬取吉首大学教务系统中的成绩单。我们使用requests库和BeautifulSoup库获取成绩单数据,并使用pandas库将数据保存到CSV文件中。我们提供了两个示例代码,分别用于获取单个学期和多个学期的成绩单数据。这些技巧可以帮助我们更好地了解自己的成绩情况。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python 爬取吉首大学网站成绩单 - Python技术站

(0)
上一篇 2023年5月15日
下一篇 2023年5月15日

相关文章

  • Python图像滤波处理操作示例【基于ImageFilter类】

    Python 图像滤波处理操作是图像处理中的重要部分。在 Python 中,可以使用 ImageFilter 类来实现图像滤波操作。下面是实现这个操作的完整攻略: ImageFilter 类 ImageFilter 类包含了一些常见的图像滤波算法,可以通过不同的方法对图像进行处理。可以通过导入 pillow 库中的 ImageFilter 类来使用这些功能。…

    python 2023年5月18日
    00
  • Python技法之简单递归下降Parser的实现方法

    对于“Python技法之简单递归下降Parser的实现方法”的完整攻略,我将按照以下内容进行详细讲解: 简述递归下降Parser的基本原理和实现方法; 分步骤讲解如何用Python实现递归下降Parser; 两条示例说明,演示如何用Python实现简单递归下降Parser。 1. 递归下降Parser的基本原理和实现方法 首先,递归下降Parser是一种基于…

    python 2023年6月3日
    00
  • Python – 检查列表中的重复项并将重复项添加在一起以使用总和值更新列表

    【问题标题】:Python – Checking duplicates in a list and adding duplicates together to update the list with the summed valuePython – 检查列表中的重复项并将重复项添加在一起以使用总和值更新列表 【发布时间】:2023-04-07 00:10:…

    Python开发 2023年4月7日
    00
  • python语言基本语句用法总结

    Python语言基本语句用法总结 Python作为一种高级编程语言,它的基本语句用法对于学习和使用Python来说非常重要,以下是Python语言基本语句用法总结。 变量和赋值语句 在Python中,可以通过一个变量名来存储数字、字符串等类型的数据。变量名可以是任意字符或者字符串,但是变量名不能以数字开头。变量的赋值使用“=”符号,如下所示: num = 1…

    python 2023年5月13日
    00
  • Python APScheduler执行使用方法详解

    Python APScheduler执行使用方法详解 简介 APScheduler是一个Python的定时任务调度框架,支持多种调度方式,比如说间隔调度、定时调度、日期调度等。可以方便地实现各种定时任务的调度,是Python中常用的一种调度框架。本文将详细介绍Python APScheduler的使用方法。 安装 APScheduler可以通过pip进行安装…

    python 2023年6月2日
    00
  • Python中print和return的作用及区别解析

    Python中的print和return都是用于在程序中输出和返回结果的关键字,但它们之间有着明显的区别和作用。本篇攻略将带你详细解析二者的用法和区别。 一、print print的作用是在程序中输出内容,将其显示在屏幕上。其基本语法如下: print(value, …, sep=’ ‘, end=’\n’, file=sys.stdout, flush…

    python 2023年6月5日
    00
  • Hadoop Streaming简单作业失败错误python

    【问题标题】:Hadoop Streaming simple job fails error pythonHadoop Streaming简单作业失败错误python 【发布时间】:2023-04-05 17:21:02 【问题描述】: 我是 hadoop 和 mapreduce 的新手,我正在尝试编写一个 mapreduce 来计算字数 txt 文件的前 …

    Python开发 2023年4月5日
    00
  • 浅谈Java之Map 按值排序 (Map sort by value)

    浅谈Java之Map按值排序(Mapsortbyvalue) 在Java中,Map是一种非常常用的数据结构,它存储的是键值对,由于Map不是一个序列,所以它的排序需要进行特殊处理。本文将详细探讨如何对Map按值进行排序。 思路 对于Map的排序,我们需要先将Map的键值对转换成List,然后对List进行排序。对于List的排序,我们需要自定义一个比较器,通…

    python 2023年5月14日
    00
合作推广
合作推广
分享本页
返回顶部