Python获取中国大学MOOC某课程评论及其参与人数

2023-05-16

在这里插入图片描述

文章目录

  • 前言
  • 一、需求
  • 二、分析
  • 三、运行结果

前言

  1. 本系列文章来源于真实的需求
  2. 本系列文章你来提我来做
  3. 本系列文章仅供学习参考

一、需求

1、课程参加人数

在这里插入图片描述

2、课程学员名称及其评论

在这里插入图片描述

二、分析

首先查看网页源代码是否有需要的数据

  • 课程参加人数

在这里插入图片描述

  • 课程学员名称及其评论
    在这里插入图片描述

F12 打开浏览器工具进行抓包分析

  • 课程学员名称及其评论
    在这里插入图片描述

通过浏览器快速重新发起接口请求(Replay XHR),测试发送成功

在这里插入图片描述

分析接口参数

  • csrfKey 动态
  • courseId 课程id 固定
  • pageSize 页面 固定
  • orderBy 固定

在这里插入图片描述

找到csrfKey来源,构造请求即可获取评论接口数据

  • 通过全局搜索当前页面接口并未发现csrfkey

在这里插入图片描述

  • 在进入Mook官网首页通过搜索csrfkey的值可以定位来源(清除cookie重新刷新获取首页接口数据,进入课程详情页刷新对比接口数据即可定位)

在这里插入图片描述

整体解决方案
1、首页获取set-cookie的值并处理
2、构造评论接口发起请求获取评论数据

# -*- encoding:utf-8 -*-
__author__ = "Nick"
__created_date__ = "2023/02/23"


import requests
import re
import json


# 请求头定义
HEADERS = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36"
}


# 获取课程参与人数和评论
def get_course_participate_comment():
    # session 实例化
    session = requests.session()
    # 慕课主页url
    index_url = "https://www.icourse163.org/"
    # 慕课主页发起请求,获取后面需要的csrfKey
    index_res = session.get(index_url, headers=HEADERS)
    # 获取csrfKey
    key = index_res.cookies.get("NTESSTUDYSI")

    # 详细课程url
    course_url = "https://www.icourse163.org/course/XJTU-46016?from=searchPage&outVendor=zw_mooc_pcssjg_"
    course_res = session.get(url=course_url,headers=HEADERS)
    # 获取课程参与人数
    deal = re.compile(r'enrollCount : "(.*?)"')
    result = deal.findall(course_res.text)
    participate_person = result[0]

    #课程评论url

    comment_url = f"https://www.icourse163.org/web/j/mocCourseV2RpcBean.getCourseEvaluatePaginationByCourseIdOrTermId.rpc?csrfKey={key}"
    headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36",
        "referer": "https://www.icourse163.org/course/XJTU-46016?from=searchPage&outVendor=zw_mooc_pcssjg_",
    }

    # 写入文本文件中
    with open("../慕课课程参与人数和课程评价.txt", mode="w", encoding="utf-8") as f:
        f.write(f"课程参与人数: {participate_person}\n")
        # 获取所有评论数,这里就获取前7页数据
        for i in range(1,8):
            param = {
                "courseId": "268001",
                "pageIndex": i,
                "pageSize": "20",
                "orderBy": "3"
            }
            comment_res = session.post(url=comment_url, data=param,headers=headers)
            data = json.loads(comment_res.text)
            for count in range(len(data["result"]["list"])):
                user_name = data["result"]["list"][count]["userNickName"]
                content = data["result"]["list"][count]["content"]
                f.write(f"学员姓名:{user_name}, 评价:{content}\n")
                print("一条数据写入完成!")
            print("数据写入完毕!")


if __name__ == '__main__':
    get_course_participate_comment()

三、运行结果

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python获取中国大学MOOC某课程评论及其参与人数 的相关文章

随机推荐

  • 空目录批量添加文件.gitkeep

    背景 1 xff0c 有个项目存在多个空目录 为保持目录结构 xff0c 希望提交时也能提交这些空目录 手动搜寻空目录比较麻烦 xff0c 希望能采用命令行自动搜索 2 xff0c OS为WINDOWS 11 方法 1 xff0c 切换当前
  • 路由器拨号密码恢复

    背景 路由器拨号上网的密码因时间久远遗忘了 xff0c 恢复并记录下过程 步骤 1 xff0c 安装wireshark choco install wireshark y 注意 实践发现wireshark安装后 xff0c 启动提示还需要安
  • 指定 make install 的安装目录的方法

    方法1 xff1a configure prefix 61 your dir make make install 方法2 xff1a configure make make install DESTDIR 61 your dir 方法3 x
  • 如何删除outlook中的重复邮件

    问题背景 xff1a outlook 卸载重装后 xff0c 会把之前已收的邮件 xff0c 再次下载到本地 xff0c 出现大量重复邮件 解决思路 xff1a 搜索outlook邮件删除重复邮件的工具 xff0c 有outlook dup
  • Win10安装安卓模拟器入坑记

    笔记本换了硬盘 xff0c 安装Win10之后 xff0c 装了一堆软件和工具 xff0c 包括Docker for Windows等 xff0c 然后打算安装一个安卓模拟器 之前一直用的逍遥 xff0c 也没碰到啥问题 xff0c 这次就
  • C# 8.0 新特性

    使用C xff03 8 0中的模式 xff0c 做得更多 Visual Studio 2019预览版2已经发布 xff01 伴随它的还有一些C xff03 8 0的功能 xff0c 供您试用 主要是关于模式匹配 xff0c 但我会在最后提到
  • Android:java.io.IOException: Cannot run program "/system/xbin/su": error=13, Permission denied

    java io IOException Cannot run program 34 system xbin su 34 error 61 13 Permission denied 我的情况 同一套App程序 之前跑在Android4 0中没
  • 还在怕不可以和众多女朋友一起聊天,python教你创建多窗口,再也不怕露馅了

    需求描述 创建一个多用户 xff0c 多房间的全双工聊天室 多用户 xff0c 多房间的意思是可以有多个聊天室 xff0c 每个聊天室里可以有多个用户 xff0c 并且用户可以通过输入房间号进入聊天室 全双工的意思是聊天室中的用户在接收其他
  • webrtc媒体服务器介绍

    一 为什么需要流媒体服务 xff1f 众所周知webrtc原生的网络连接方式是P2P通信模型 xff0c 即通信双方是对等的 如下图左侧图 xff0c 通信双方直接进行音视频传输 xff0c 中间的服务器仅做两端的信令交互 将这种P2P方式
  • C语言——基础查漏补缺(二):《C程序设计试题汇编》应试概念总结

    相关文章 xff1a C语言 基础查漏补缺 xff08 一 xff09 xff1a 超长文帮你理清一些概念 C语言 基础查漏补缺 xff08 三 xff09 xff1a 谭浩强红书刷题笔记大杂烩 C语言 基础查漏补缺 xff08 四 xff
  • 6. 用冒泡法实现对10个整数按从小到大的顺序排序输出

    用冒泡法实现对10个整数按从小到大的顺序排序输出 xff08 完成sort1函数 xff09 span class hljs comment include lt stdio h gt span span class hljs keywor
  • Python图形绘制

    文章目录 前言一 turtle海龟绘图二 Python图形绘制三 绘画小黄人习题巩固 前言 海龟绘图很适合用来引导孩子学习编程 最初来自于 Wally Feurzeig Seymour Papert 和 Cynthia Solomon 于
  • 一个项目带你走进软件测试2

    文章目录 前言一 前期准备二 第一阶段1 熟悉软件项目2 阅读测试计划 三 第二阶段1 根据需求规格说明书设计测试用例2 执行测试用例3 提交bug 三 第三阶段关于项目面试问答 文档下载地址 前言 该项目针对在线的项目 xff08 鹏保宝
  • 查看ubuntu版本

    方法1 xff1a 使用命令 xff1a cat proc version 查看 proc目录下记录的当前系统运行的各种数据 version记录的版本信息可以直接通过cat查看到 xff0c 还可以看到我的gcc版本呢 Linux vers
  • 【接口自动化】接口报错500问题解决

    问题呈现 xff1a Python 43 requests接口报错返回500 xff08 后端没进行相关校验 xff0c 直接返回500 xff09 解决探索 xff1a Python 43 request生成的数据放在postman跑 x
  • 【部署教程入门级别】开源会议室小程序部署

    文章目录 前言一 项目整体二 前要准备1 安装Python 开发环境2 安装redis非关系数据库3 安装mysql服务器和客户端4 安装git工具5 安装微信开发工具6 Github或Gitee注册账号 三 正式部署1 pull源码2 部
  • Python批量获取高校基本信息

    文章目录 前言一 需求二 分析三 处理四 运行效果 前言 为了更好的掌握数据处理的能力 xff0c 因而开启Python网络爬虫系列小项目文章 小项目小需求驱动 xff0c 每篇文章会使用两种以上的方式 xff08 Xpath Bs4 Py
  • Python爬取各大外包网站需求

    文章目录 前言一 需求二 分析三 处理四 总结 前言 为了更好的掌握数据处理的能力 xff0c 因而开启Python网络爬虫系列小项目文章 小项目小需求驱动总结各种方式 页面源代码返回数据 xff08 Xpath Bs4 PyQuery 正
  • Python获取重庆市农场品行情

    文章目录 前言一 需求二 分析三 运行 前言 本系列文章来源于真实的需求本系列文章你来提我来做本系列文章仅供学习参考 one Leave a message at the end of the article two Get wechat
  • Python获取中国大学MOOC某课程评论及其参与人数

    文章目录 前言一 需求二 分析三 运行结果 前言 本系列文章来源于真实的需求本系列文章你来提我来做本系列文章仅供学习参考 一 需求 1 课程参加人数 2 课程学员名称及其评论 二 分析 首先查看网页源代码是否有需要的数据 课程参加人数 课程