当前位置: 首页 > 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()

三、运行结果

在这里插入图片描述

http://www.lryc.cn/news/18059.html

相关文章:

  • 【C++】类和对象(完结篇)
  • 低代码开发可以解决哪些问题?
  • Linux 中使用 docker-compose 部署 MongoDB 6 以上版本副本集及配置 SSL / TLS 协议
  • JavaWeb--Mybatis练习
  • Springer-MTA期刊上传Latex要求
  • Graph Embedding基础 图表示学习 什么是Graph Embedding
  • 某直聘tp_token解析
  • 替代启攀微8按键触控八通道触摸芯片-GTC08L
  • Zabbix“专家坐诊”第182期问答汇总
  • PHP、Nginx、openssl ECC证书搭建
  • 秒杀服务------技术点及亮点
  • 【Python数据挖掘入门】一、数据挖掘概况
  • 【python】anaconda 管理 python 环境
  • 线上插画培训班有用吗,教你选靠谱的插画课程
  • 吃鸡用什么蓝牙耳机效果好?手游吃鸡公认最好的几款蓝牙耳机
  • 四个步骤在CRM系统中设置游戏化机制
  • 2023年TikTok营销如何破局?品牌应做好这6点
  • 2023年CDGA考试-第5章-数据建模和设计(含答案)
  • 蓝桥杯入门即劝退(二十)快乐数(我不快乐了)
  • Aspose.Imaging for .NET V23
  • 通信算法复习题纲
  • 交叉编译 MQTT/Mosquitto
  • 无重复字符的最长子串的解法
  • Apache Hadoop生态部署-zookeeper单机安装
  • java面试题-IO流
  • Java性能-GC工具
  • 复赛名单公布!2022隐私计算HACKATHON大赛火热进行中!
  • 微信小程序的全局弹窗以及全局实例
  • 100种思维模型之诺依曼思维模型-019
  • Python + Airtest + poco + pytest + pytest-html 实现Android App自动化测试框架