信息网站建设方案,网站维护与推广,新手学习做网站,安徽网站建设认准-晨飞网络文章目录前言一、需求二、分析三、运行结果前言
本系列文章来源于真实的需求本系列文章你来提我来做本系列文章仅供学习参考
一、需求 1、课程参加人数 2、课程学员名称及其评论 二、分析 首先查看网页源代码是否有需要的数据 课程参加人数 课程学员名称及其评论 F12 打开浏… 文章目录前言一、需求二、分析三、运行结果前言
本系列文章来源于真实的需求本系列文章你来提我来做本系列文章仅供学习参考
一、需求 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/23import 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, headersHEADERS)# 获取csrfKeykey index_res.cookies.get(NTESSTUDYSI)# 详细课程urlcourse_url https://www.icourse163.org/course/XJTU-46016?fromsearchPageoutVendorzw_mooc_pcssjg_course_res session.get(urlcourse_url,headersHEADERS)# 获取课程参与人数deal re.compile(renrollCount : (.*?))result deal.findall(course_res.text)participate_person result[0]#课程评论urlcomment_url fhttps://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?fromsearchPageoutVendorzw_mooc_pcssjg_,}# 写入文本文件中with open(../慕课课程参与人数和课程评价.txt, modew, encodingutf-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(urlcomment_url, dataparam,headersheaders)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()
三、运行结果