你好 这边有一个表单查询网站 每一次只能查询一个同学 我现在需要批量查询我们班51个学生的成绩 请使用Python语言写一个软件来实现输入名字 并且批量查询 批量导出的功能 这是查询的网站 https://679401.yichafen.com/public/queryscore/sqcode/NsDcAn1mNzE2NHw3ODUwNjY2MDg3YjdhNGJiYTdmMzg2NzQ1ZDgxMjNlNXw2Nzk0MDEO0O0O.html
时间: 2023-12-26 20:03:49 浏览: 124
好的,首先你需要安装 `requests` 和 `beautifulsoup4` 这两个 Python 库。可以使用以下命令来安装:
```
pip install requests beautifulsoup4
```
接下来,你可以使用以下代码来批量查询成绩和导出数据:
```python
import requests
from bs4 import BeautifulSoup
import csv
# 学生名字列表
students = ['张三', '李四', '王五', '赵六', '钱七', '孙八', '周九', '吴十', '郑十一', '王十二',
'李十三', '张十四', '赵十五', '钱十六', '孙十七', '周十八', '吴十九', '郑二十', '王二十一',
'李二十二', '张二十三', '赵二十四', '钱二十五', '孙二十六', '周二十七', '吴二十八', '郑二十九', '王三十',
'李三十一', '张三十二', '赵三十三', '钱三十四', '孙三十五', '周三十六', '吴三十七', '郑三十八', '王三十九',
'李四十', '张四十一', '赵四十二', '钱四十三', '孙四十四', '周四十五', '吴四十六', '郑四十七', '王四十八',
'李四十九', '张五十',]
# 查询的网站
url = 'https://679401.yichafen.com/public/queryscore/sqcode/NsDcAn1mNzE2NHw3ODUwNjY2MDg3YjdhNGJiYTdmMzg2NzQ1ZDgxMjNlNXw2Nzk0MDEO0O0O.html'
# 请求头信息
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'}
# 导出文件名
file_name = 'scores.csv'
# 打开文件并设置编码
csv_file = open(file_name, 'w', encoding='utf-8', newline='')
# 创建 csv 写入对象
csv_writer = csv.writer(csv_file)
# 写入表头
csv_writer.writerow(['姓名', '语文', '数学', '英语', '物理', '化学', '生物', '总分'])
# 遍历学生名字列表
for student in students:
# 构造 POST 请求的参数
data = {
'name': student,
'type': 'query'
}
# 发送 POST 请求
response = requests.post(url, data=data, headers=headers)
# 解析 HTML 页面
soup = BeautifulSoup(response.text, 'html.parser')
# 查找成绩数据
score_list = soup.find_all('div', class_='stu')
# 如果找到了成绩数据
if score_list:
# 获取学生姓名
name = score_list[0].find('span', class_='name').text
# 获取各科成绩
score = [x.text for x in score_list[0].find_all('span', class_='score')]
# 计算总分
total_score = sum([int(x) for x in score])
# 输出成绩
print(f'{name}: {score}, 总分: {total_score}')
# 写入 csv 文件
csv_writer.writerow([name] + score + [total_score])
else:
# 如果没有找到成绩数据
print(f'{student} 的成绩查询失败!')
# 关闭文件
csv_file.close()
# 输出完成提示
print(f'所有学生的成绩查询和导出已完成,结果已保存到 {file_name} 文件中!')
```
由于每个人的查询结果可能不同,上述代码仅供参考,你需要根据实际情况进行调整。另外需要注意的是,这个查询网站可能会有一些反爬虫措施,如果你的查询频率过高,可能会被封 IP,建议控制查询频率。