中国大学MOOD课程的数据代码
时间: 2025-09-16 16:11:40 AIGC 浏览: 3
### 关于中国大学MOOC课程的数据代码
#### 使用 `requests` 库获取 MOOC 课程信息
可以通过 Python 的 `requests` 库发送 HTTP 请求并解析 HTML 页面中的数据。以下是一个简单的示例,展示如何从中国大学 MOOC 获取课程信息:
```python
import requests
from bs4 import BeautifulSoup
def fetch_mooc_courses(url):
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'
}
response = requests.get(url, headers=headers)
if response.status_code == 200:
soup = BeautifulSoup(response.text, 'html.parser')
courses = []
# 假设每门课程的信息存储在一个 class="course-item" 的 div 中
course_items = soup.find_all('div', class_='course-item')
for item in course_items:
title = item.find('h2').text.strip() if item.find('h2') else "N/A"
description = item.find('p').text.strip() if item.find('p') else "N/A"
link = item.find('a')['href'] if item.find('a') and 'href' in item.find('a').attrs else "#"
courses.append({
'title': title,
'description': description,
'link': f"http://www.icourse163.org{link}"
})
return courses
else:
raise Exception(f"Failed to retrieve data: {response.status_code}")
# 示例 URL
url = "https://www.icourse163.org/category/computer-science?page=1"
courses_data = fetch_mooc_courses(url)
for idx, course in enumerate(courses_data[:5], start=1): # 显示前五条记录
print(f"{idx}. Title: {course['title']} | Description: {course['description']} | Link: {course['link']}")
```
此代码片段展示了如何通过请求特定页面提取课程名称、描述以及链接[^1]。
---
#### 处理异步加载的课程数据
由于部分 MOOC 页面可能涉及动态加载(AJAX),仅靠 `requests` 可能无法完全抓取所需数据。此时可考虑使用 Selenium 来模拟浏览器行为。以下是基于 Selenium 的实现方式:
```python
from selenium import webdriver
from selenium.webdriver.chrome.service import Service as ChromeService
from selenium.webdriver.common.by import By
from time import sleep
def scrape_mooc_with_selenium(url):
options = webdriver.ChromeOptions()
options.add_argument('--headless') # 后台运行模式
service = ChromeService(executable_path='/path/to/chromedriver') # 替换为实际路径
driver = webdriver.Chrome(service=service, options=options)
try:
driver.get(url)
sleep(3) # 等待页面加载
elements = driver.find_elements(By.CLASS_NAME, 'course-card-content')
courses = []
for element in elements:
title = element.find_element(By.TAG_NAME, 'h2').text.strip()
desc = element.find_element(By.TAG_NAME, 'p').text.strip()
link = element.find_element(By.TAG_NAME, 'a').get_attribute('href')
courses.append({'title': title, 'description': desc, 'link': link})
return courses
finally:
driver.quit()
# 示例 URL
url = "https://www.icourse163.org/category/software-engineering"
data = scrape_mooc_with_selenium(url)
for entry in data[:5]:
print(entry)
```
Selenium 方法适用于处理复杂的 JavaScript 渲染场景,能够更全面地捕获页面内容[^4]。
---
#### 计算总评成绩逻辑
针对引用提到的成绩计算规则,可以编写如下函数来辅助分析学生是否满足条件:
```python
def calculate_final_grade(mid_term_score, final_score):
if mid_term_score >= 200 and ((mid_term_score * 0.4 + final_score * 0.6) >= 60 or final_score >= 60):
total_grade = max(final_score, mid_term_score * 0.4 + final_score * 0.6)
return round(total_grade, 2), True
else:
return None, False
# 测试案例
grades = [
{"mid": 220, "final": 80},
{"mid": 190, "final": 70}
]
results = [(calculate_final_grade(g["mid"], g["final"])) for g in grades]
print(results)
```
该脚本实现了对中国大学 MOOC 学生评分系统的验证和最终分数评估[^2]。
---
#### 自测题目代码参考
对于一些基础练习题目的解答,例如沙漏图案绘制或其他算法挑战,可以直接参阅公开资源分享的内容作为模板进行修改优化[^3]。
---
阅读全文
相关推荐


















