爬取全校课表通常需要以下步骤:
观察和准备
观察登录界面,了解登录所需的参数(如用户名、密码、验证码等)。
观察课表页面,找到请求课表数据的URL。
安装依赖库
安装`requests`库用于发送HTTP请求。
安装`BeautifulSoup`库用于解析HTML内容。
如果需要处理验证码,可以安装`pytesseract`进行OCR识别,或者使用第三方验证码识别服务。
模拟登录
使用`requests`库发送POST请求,携带登录所需的参数(学号、密码、验证码等)。
注意处理隐藏参数,如`__VIEWSTATE`和`__VIEWSTATEGENERATOR`。
爬取课表数据
访问课表页面URL,获取HTML内容。
使用`BeautifulSoup`解析HTML,提取课表数据。
数据处理和保存
清洗数据,格式化成需要的格式。
保存数据到Excel文件或其他格式,如CSV或数据库。
```python
import requests
from bs4 import BeautifulSoup
登录信息
username = 'your_username'
password = 'your_password'
登录URL
login_url = 'http://sso.cqcet.edu.cn/uaa/login_process'
课表URL
schedule_url = 'http://ossc.cqcet.edu.cn/api/schedule/query'
创建session
session = requests.Session()
登录
response = session.post(login_url, data={
'username': username,
'password': password,
添加其他必要的登录参数,如验证码等
}, headers={
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36'
})
检查登录是否成功
if response.status_code == 200:
获取课表数据
schedule_response = session.get(schedule_url)
soup = BeautifulSoup(schedule_response.text, 'html.parser')
提取课表数据
schedule_data = soup.find_all('tr', class_='schedule-row') 根据实际HTML结构调整
保存数据到Excel
with open('schedule.xlsx', 'w', encoding='utf-8') as f:
for row in schedule_data:
f.write(row.text.strip() + '\n')
else:
print('登录失败,请检查用户名和密码')
请注意,以上代码仅为示例,实际使用时需要根据目标网站的具体情况进行调整。同时,确保遵循目标网站的爬虫政策,避免违反使用条款。