本攻略将介绍如何使用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技术站