You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python+BeautifulSoup爬取Coursera前10页课程列表?

解决Coursera多页课程爬取问题

Coursera的课程列表是动态加载的,直接修改URL的page参数没用——因为前端是通过异步请求接口获取后续页面数据,而非服务器端渲染不同页面。以下是具体实现方案:

1. 定位动态加载的API端点

打开浏览器开发者工具(F12),切换到「网络」面板:

  • 访问https://www.coursera.org/courses
  • 滚动页面到底部,触发下一页加载
  • 在请求列表里找类型为XHR的请求,通常URL类似https://www.coursera.org/api/search/v2/courses,这就是获取课程数据的核心接口

2. 模拟API请求

用requests库发送GET请求到该API,需带上必要参数和请求头:

  • 核心参数:offset(每页起始偏移量)和limit(每页课程数量,一般为20),其他参数(如fields、sortField)直接从抓包的请求里复制即可
  • 请求头:至少带上User-Agent模拟浏览器,避免被拦截

3. 代码示例

import requests
import time

# 模拟浏览器请求头
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36',
    'Accept': 'application/json'
}

# 核心API地址(需根据抓包结果调整)
base_api_url = "https://www.coursera.org/api/search/v2/courses"
total_pages = 10
per_page = 20  # 每页课程数,和抓包的limit参数保持一致

for page_num in range(total_pages):
    # 计算当前页的偏移量
    offset = page_num * per_page
    params = {
        'limit': per_page,
        'offset': offset,
        'fields': 'id,slug,name,partnerIds,description',  # 按需选择要抓取的字段
        'sortField': 'BEST_MATCH',
        'sortOrder': 'ASC',
        'q': ''  # 空值表示全课程搜索,有筛选条件可修改此处
    }

    # 发送请求并处理响应
    response = requests.get(base_api_url, headers=headers, params=params)
    response.raise_for_status()  # 抛出请求错误
    course_data = response.json()

    # 解析并输出课程信息
    for item in course_data['elements']:
        course = item['element']
        print(f"课程名称: {course['name']}")
        print(f"课程链接: https://www.coursera.org/learn/{course['slug']}")
        print(f"提供机构ID: {course['partnerIds']}")
        print("-" * 50)

    # 避免请求过于频繁,添加延迟
    time.sleep(2)

注意事项

  • 抓包时要保证参数和浏览器请求完全一致,否则可能返回错误数据
  • 若遇到403/401错误,可尝试添加浏览器的Cookie到请求头(从开发者工具的请求里复制)
  • 不要过度频繁请求,避免被Coursera封禁IP
  • API返回的JSON结构可能会更新,需根据实际返回结果调整解析逻辑

内容的提问来源于stack exchange,提问作者user634831

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 04:10:26