python爬取正方教务数据
时间: 2023-07-28 15:06:37 浏览: 119
爬取正方教务数据可以使用 Python 中的 requests 库和 BeautifulSoup 库。以下是一个简单的示例代码,可以爬取正方教务系统的成绩数据:
```python
import requests
from bs4 import BeautifulSoup
# 登录信息
username = '你的学号'
password = '你的密码'
# 构造请求头
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'}
# 登录页面
login_url = 'http://jwgl.xxx.edu.cn/default2.aspx'
# 获取验证码
captcha_url = 'http://jwgl.xxx.edu.cn/CheckCode.aspx'
# 构造会话
session = requests.Session()
# 获取登录页面,保存 cookie
response = session.get(login_url, headers=headers)
# 解析页面,获取 __VIEWSTATE、__VIEWSTATEGENERATOR、__EVENTVALIDATION 等参数
soup = BeautifulSoup(response.text, 'html.parser')
view_state = soup.find('input', attrs={'name': '__VIEWSTATE'})['value']
view_state_generator = soup.find('input', attrs={'name': '__VIEWSTATEGENERATOR'})['value']
event_validation = soup.find('input', attrs={'name': '__EVENTVALIDATION'})['value']
# 获取验证码
captcha_response = session.get(captcha_url, headers=headers)
with open('captcha.jpg', 'wb') as f:
f.write(captcha_response.content)
captcha = input('请输入验证码:')
# 登录
data = {
'__VIEWSTATE': view_state,
'__VIEWSTATEGENERATOR': view_state_generator,
'__EVENTVALIDATION': event_validation,
'txtUserName': username,
'TextBox2': password,
'txtSecretCode': captcha,
'Button1': '',
'lbLanguage': '',
'hidPdrs': '',
'hidsc': ''
}
response = session.post(login_url, data=data, headers=headers)
# 获取成绩页面
score_url = 'http://jwgl.xxx.edu.cn/xscjcx.aspx?xh=' + username + '&xm='
response = session.get(score_url, headers=headers)
# 解析页面,获取成绩信息
soup = BeautifulSoup(response.text, 'html.parser')
table = soup.find('table', attrs={'class': 'datelist'})
rows = table.find_all('tr')[1:]
for row in rows:
columns = row.find_all('td')
print(columns[0].text, columns[1].text, columns[3].text)
```
需要注意的是,每个学校的正方教务系统可能会有不同的登录方式和页面结构,需要根据具体情况进行修改。
阅读全文