Python爬虫---中国大学MOOC爬取数据(文中有

该文章已生成可运行项目,

Python爬虫爬取中国大学MOOC数据的方法

分析目标网站结构

中国大学MOOC(慕课)网站包含大量公开课程信息,如课程名称、讲师、评分、学习人数等。使用浏览器开发者工具(F12)检查网页结构,确认数据是通过动态加载(AJAX)还是静态HTML呈现。动态内容通常需要分析接口或使用Selenium模拟浏览器行为。

获取课程列表页数据

对于静态页面,可直接使用requestsBeautifulSoup库抓取。动态内容需通过分析XHR请求接口获取JSON数据。示例代码:

import requests
from bs4 import BeautifulSoup

url = "https://www.icourse163.org/"
headers = {"User-Agent": "Mozilla/5.0"}
response = requests.get(url, headers=headers)
soup = BeautifulSoup(response.text, "html.parser")
# 解析课程链接或其他元素
courses = soup.find_all("div", class_="course-card")

处理动态加载内容

若数据通过接口返回,使用requests直接调用接口。示例:

api_url = "https://www.icourse163.org/web/j/courseBean.getCoursePanelList.rpc"
params = {"page": 1, "size": 20}
response = requests.get(api_url, params=params, headers=headers)
data = response.json()
# 提取课程信息
for course in data["result"]["list"]:
    print(course["name"], course["schoolName"])

使用Selenium处理复杂场景

当数据需要交互(如点击翻页)时,用Selenium模拟操作:

from selenium import webdriver

driver = webdriver.Chrome()
driver.get("https://www.icourse163.org/")
# 模拟点击或滚动
element = driver.find_element_by_class_name("course-card")
print(element.text)
driver.quit()

数据存储与反爬策略

将爬取的数据存入CSV或数据库:

import csv

with open("courses.csv", "w", newline="", encoding="utf-8") as f:
    writer = csv.writer(f)
    writer.writerow(["课程名", "学校"])
    for course in courses:
        writer.writerow([course["name"], course["school"]])

注意事项:

  • 遵守网站robots.txt规则,避免高频请求。
  • 添加随机延迟和头部伪装(如User-Agent轮换)。
  • 动态IP或使用代理应对IP封锁。

通过以上方法可高效爬取中国大学MOOC的公开数据,适用于课程分析或学术研究。

本文章已经生成可运行项目
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值