前言
- 本系列文章来源于真实的需求
- 本系列文章你来提我来做
- 本系列文章仅供学习参考
一、需求
1、课程参加人数
2、课程学员名称及其评论
二、分析
首先查看网页源代码是否有需要的数据
F12 打开浏览器工具进行抓包分析
通过浏览器快速重新发起接口请求(Replay XHR),测试发送成功
分析接口参数
找到csrfKey来源,构造请求即可获取评论接口数据
整体解决方案
1、首页获取set-cookie的值并处理
2、构造评论接口发起请求获取评论数据
__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 = requests.session()
index_url = "https://www.icourse163.org/"
index_res = session.get(index_url, headers=HEADERS)
key = index_res.cookies.get("NTESSTUDYSI")
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]
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")
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(使用前将#替换为@)