当前位置: 首页 > news >正文

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

在这里插入图片描述

文章目录

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

前言

  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()# 慕课主页urlindex_url = "https://www.icourse163.org/"# 慕课主页发起请求,获取后面需要的csrfKeyindex_res = session.get(index_url, headers=HEADERS)# 获取csrfKeykey = index_res.cookies.get("NTESSTUDYSI")# 详细课程urlcourse_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]#课程评论urlcomment_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()

三、运行结果

在这里插入图片描述

相关文章:

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

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

【C++】类和对象(完结篇)

文章目录1. 再谈构造函数1.1 初始化列表1.2 explicit关键字2. static 成员2.1 静态成员变量2.1 静态成员函数2.3 练习2.4 总结3. 匿名对象4. 友元4.1 友元函数4.2 友元类5. 内部类6. 拷贝对象时编译器的一些优化7. 再次理解类和对象这篇文章呢,我们来再来对类和对象…...

低代码开发可以解决哪些问题?

低代码开发可以解决哪些问题?如果用4句话去归纳,低代码开发可以解决以下问题—— 为企业提供更高的灵活性,用户可以突破代码的限制自主开发业务应用;通过减少对专业软件开发人员的依赖,公司可以快速响应市场上的新业务…...

Linux 中使用 docker-compose 部署 MongoDB 6 以上版本副本集及配置 SSL / TLS 协议

一、准备环境 MongoDB 副本集部署至少 3 个节点(奇数节点),为了保障数据安全性,可考虑将 MongoDB 节点分布在不同的主机上,本示例使用一台主机部署 3 个 MongoDB示例。 1、创建 MongoDB 集群数据相关目录 # 创建 Mo…...

JavaWeb--Mybatis练习

Mybatis练习Mybatis练习1 配置文件实现CRUD1.1 环境准备1.2 查询所有数据1.2.1 编写接口方法1.2.2 编写SQL语句1.2.3 编写测试方法1.2.4 起别名解决上述问题1.2.5 使用resultMap解决上述问题1.2.6 小结1.3 查询详情1.3.1 编写接口方法1.3.2 编写SQL语句1.3.3 编写测试方法1.3.4…...

Springer-MTA期刊上传Latex要求

https://blog.csdn.net/qq_40721108/article/details/129000957本文简述比较全面Please provide any additional items.If your data are available online, for example in a repository, you can add a weblink using the “Link(s) to supporting data” option from the dr…...

Graph Embedding基础 图表示学习 什么是Graph Embedding

本文包括 DeepWalk LINE SDNE Node2vec Struc2vec等几个重要的Graph Embedding 方法 先说下不同embedding的区别是什么: DeepWalk:采用随机游走,形成序列,采用skip-gram方式生成节点embedding。node2vec:不同的随机游…...

某直聘tp_token解析

尊重版权,请勿盗版,不放代码。截至2023-02-23更新---------------------------------------检测windows属性总数大于150 改成大于15 > 150检测了document属性大于50检测了navigate属性检测了navigate.plugins 属性值检测moudle nodejs是否存在&#x…...

替代启攀微8按键触控八通道触摸芯片-GTC08L

能完美替代启攀微8按键触控八通道电触摸芯片-GTC08L芯片是一款非常适用于音响上超稳定超抗干扰低功耗八通道电容式触摸IC;可通过触摸实现各种逻辑功能控制;操作简单、方便实用;电压范围宽,可在2.7V~5.5V(单…...

Zabbix“专家坐诊”第182期问答汇总

问题一: Q:像烽火、浪潮这种没有ilo的设备怎么监控他们的硬件状态呢? A:如果没有ilo,可以使用其他硬件监控软件,例如HP Insight Manager、IBM Director、Dell OpenManage等。这些软件可以帮助您监控硬件状…...

PHP、Nginx、openssl ECC证书搭建

在一台Ubuntu中#!/bin/bash# 安装 Nginxsudo apt-get updatesudo apt-get install nginxsudo apt-get install libssl-devsudo apt-get install -y nginx# 配置 Nginxsudo ufw allow Nginx HTTPsudo systemctl start nginxsudo systemctl enable nginx# 安装 PHPsudo apt-get i…...

秒杀服务------技术点及亮点

大技术使用Redisson使用Redisson在秒杀服务中有两个作用,一个是作为分布式锁来确保多个秒杀服务同时在线时同时上架秒杀商品,只允许有一个秒杀服务成功上架秒杀商品,其他的上架失败。第二个作用是作为分布式信号量,每个秒杀商品在…...

【Python数据挖掘入门】一、数据挖掘概况

一、数据挖掘概况 数据挖掘是指从大量的数据中,通过统计学、人工智能、机器学习等方法,挖掘出未知的、具有价值的信息和知识的过程。 典型案例: 啤酒与尿布杜蕾斯与口香糖杜蕾斯与红酒 数据挖掘是一门交叉学科,覆盖了统计学、数…...

【python】anaconda 管理 python 环境

anaconda 管理虚拟环境anaconda 简介python 虚拟环境的安装查看当前 anaconda中所有的虚拟环境创建新的虚拟环境激活所创建的虚拟环境删除指定的虚拟环境退出当前虚拟环境查看当前虚拟环境中所有安装的库安装常用包pycharmpycharm 下环境配置pycharm 使用anaconda 简介 anacon…...

线上插画培训班有用吗,教你选靠谱的插画课程

线上插画培训班有用吗,教你选靠谱的插画课程,推荐5个靠谱的动漫插画培训课程,各有特色和优势,相信可以给大家一些参考! 一:5个靠谱的动漫插画网课 1、轻微课(五颗星) 主打课程有日…...

吃鸡用什么蓝牙耳机效果好?手游吃鸡公认最好的几款蓝牙耳机

蓝牙耳机的作用很多,几乎每个人都需要一副很棒的耳机在通勤或锻炼途中使用,并且玩游戏也少不了它,手游近几年十分的流行,下面整理了几款性能不错的蓝牙耳机。 第一款:南卡小音舱蓝牙耳机 蓝牙版本:5.3 发…...

四个步骤在CRM系统中设置游戏化机制

长期高强度的单一工作会让销售人员逐渐失去对工作的兴趣,导致销售状态缺少动力和激情,工作开展愈加困难。不少企业通过CRM销售管理系统设置游戏化竞赛,调动销售人员的工作积极性。那么,如何在CRM系统中设置游戏化机制?…...

2023年TikTok营销如何破局?品牌应做好这6点

转眼到了2023年,虽然过去的一年,国际市场风云变幻,但对TikTok来说,却是丰收的一年。2022年, TikTok的全球收入为35亿美元,同比增长60%。TikTok以6.72亿次下载量依旧位居榜首,短视频进一步风靡全…...

2023年CDGA考试-第5章-数据建模和设计(含答案)

2023年CDGA考试-第5章-数据建模和设计(含答案) 单选题 1.请从下列选项中选择关于企业数据模型描述准确的选项 A.企业模型包括继承关系模型、概念模型、主题域模型、逻辑模型 B.企业模型包括数据名称、数据属性和元数据定义、概念和逻辑实体关系以及业务规则 C.企业模型包括…...

蓝桥杯入门即劝退(二十)快乐数(我不快乐了)

欢迎关注点赞评论,共同学习,共同进步! ------持续更新蓝桥杯入门系列算法实例-------- 如果你也喜欢Java和算法,欢迎订阅专栏共同学习交流! 你的点赞、关注、评论、是我创作的动力! -------希望我的文章…...

InVideo插件深度解析:如何在Unreal Engine中实现高效视频流播放与录制

InVideo插件深度解析:如何在Unreal Engine中实现高效视频流播放与录制 【免费下载链接】InVideo 基于UE4实现的rtsp的视频播放插件 项目地址: https://gitcode.com/gh_mirrors/in/InVideo InVideo是一个基于Unreal Engine 5开发的RTSP视频播放插件&#xff0…...

Godot 2D随机地图三大静默故障:黑屏、穿墙、寻路失败的根源与修复

1. 为什么刚上手Godot做2D随机地图就总卡在“生成出来是黑的”“角色穿墙”“房间连不通”这三件事上?如果你是刚从Unity或GameMaker转来Godot,或者第一次用GDScript写程序逻辑的新手,大概率已经在2D随机地图生成这个环节反复摔过跟头——不是…...

告别复杂模型:用Python+OpenCV+dlib实现简易驾驶员疲劳监测(附完整代码)

轻量级驾驶员疲劳监测系统:PythonOpenCVdlib实战指南 在长途驾驶或夜间行车时,疲劳是导致交通事故的重要因素之一。传统基于嵌入式设备的疲劳监测系统往往需要专用硬件,增加了开发成本和部署难度。本文将介绍如何利用Python生态中的OpenCV和d…...

CANN runtime:昇腾NPU 运行时的职责边界

个人主页:ujainu 文章目录前言为什么需要运行时这一层runtime管什么,不管什么Stream:并行的基本调度单位Event:跨Stream的同步锚点内存池化:少一次malloc就少一次卡顿任务队列:从计算图到硬件指令的最后一跳…...

基于ATmega328P与TFT屏的园艺环境监控系统:硬件选型与软件架构详解

1. 项目概述:打造你的家庭园艺数据监控中心如果你和我一样,是个喜欢在阳台或后院捣鼓花草的园艺爱好者,同时又对电子DIY有点兴趣,那么这个项目绝对会让你兴奋。我们不是在简单地种花,而是在用数据“聆听”植物的需求。…...

3步解决英雄联盟回放难题:ROFL-Player终极使用指南

3步解决英雄联盟回放难题:ROFL-Player终极使用指南 【免费下载链接】ROFL-Player (No longer supported) One stop shop utility for viewing League of Legends replays! 项目地址: https://gitcode.com/gh_mirrors/ro/ROFL-Player 你是否曾经遇到过这样的烦…...

Linux命令:perf

perf 命令 基本介绍 perf(Performance Counters for Linux)是 Linux 系统中用于性能分析的强大工具套件。它基于内核性能计数器(PMC),可以分析 CPU 使用率、内存访问、缓存命中率、分支预测等硬件级性能指标&#xff0…...

Python爬虫避坑手册:10年爬取经验总结,看完再也不会被封IP

做爬虫这么多年,我见过太多新手从入门到放弃,不是因为学不会Python,而是被各种反爬机制虐得怀疑人生。 我刚入行的时候,写的第一个爬虫是爬某电商网站的商品价格。当时觉得爬虫不就是发个请求,解析个HTML吗?结果代码刚跑了5分钟,IP就被封了。我当时还傻乎乎地重启路由器…...

i茅台自动预约系统:告别手动抢购,5分钟搭建智能预约平台

i茅台自动预约系统:告别手动抢购,5分钟搭建智能预约平台 【免费下载链接】campus-imaotai i茅台app自动预约,每日自动预约,支持docker一键部署(本项目不提供成品,使用的是已淘汰的算法) 项目地…...

基于Arduino与ADXL335的自制地震预警系统:从传感器原理到多点联动实现

1. 项目概述与核心思路最近在捣鼓一个挺有意思的玩意儿——一个能自主工作的地震预警系统。这可不是什么高深莫测的科研项目,而是基于一些常见的电子模块,自己动手就能搭建起来的实用装置。它的核心目标很明确:当检测到建筑物出现异常振动时&…...