吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 8443|回复: 43
收起左侧

[Python 转载] 我是如何一步步爬取“超星平台”上的视频课程

  [复制链接]
xhtdtk 发表于 2021-4-14 16:54
本帖最后由 xhtdtk 于 2021-4-14 18:46 编辑

一、前因及尝试下载
————————————————————————————————————

目前成人学历的各函授点陆续开课,为做好疫情防控,教学选择面授、线上相结合,而超星平台七号提供了优质的学习视频。

第一次尝试:打开视频源地址(失败)
1.png


第二次尝试:使用工具嗅探资源后下载(失败)
2.png


第三次尝试:使用fiddller抓包成功,状态码206,写爬虫下载视频后与第二次尝试结果一样(失败)
3.png
第四次尝试:搜索状态码206的解释,查看解释后发现请求头 'Range': 'bytes=416456454-5645612313',说明下载的是部分内容,只要改为 'Range': 'bytes=0-' 后下载即可观看(成功)
4.png
5.png




二、登录————————————————————————————————————

查看登录地址,确认提交表单的数据
6.png
输入错误的账号密码后,出现一个包,地址:http://gdsdxy.gzkz.chaoxing.com/commonlogin/commoncheck?tmp=1618371803338ttp://gdsdxy.gzkz.chaoxing.com/commonlogin/commoncheck?tmp=1618371803338,其中tmp为当前时间戳转换为毫秒——不重要,username和password不是我输入的密码,猜测为进制转换或加密,通过输入正确的账号和错误的密码、错误的账号和正确的密码后,得到正确转换后的账号和密码,但是登录后我却请求不到正确的主页信息,在手动输入正确的账号和密码登录后,通过抓包获取了真正的登录地址:http://gdsdxy.gzkz.chaoxing.com/commonlogin/commonlogin
7.png
row1: requests库,爬虫用
row2: BeautifulSoup库,处理返回的网页代码
row3: time,获取当前时间
row4: re,正则表达式,处理数据
row5: json,将字符串转换为字典
row8: 创建一个会话,在后面访问页面的时候保证是登录状态
row9: 登录的url
row10-13: 登录的账号和密码,准备post登录的表单数据
row14: 发送post请求
row15: 打印登录请求结果
请求结果没有告诉我是否登录成功,但是请求主页信息成功了,说明登录成功。




三、爬取————————————————————————————————————
1、请求主页的数据获取总课程详情的url
8.png
row18: 使用正则表达式,从登录的请求结果找到主页的url
row19: 打印主页url
row20-22: 设置带浏览器的请求头
row23: 请求主页url
row24: 将请求主页的内容进行BeautifulSoup化,这样就可以使用其语法快速筛选数据
9.png
row25: 用BeautifulSoup的find_all语法查找到总课程详情的url
row26: 用正则表达式取出url以外的部分
row27: 打印总课程详情的url


2、从总课程详情的url的数据获取每个课程的url
10.png
row30: 请求总课程详情的url
row31: 将请求的总课程详情的内容进行BeautifulSoup化
11.png
row32: find_all语法查找各课程的url
row33-36: 遍历打印出课程学习进度页面名称和url

3、进入课程学习进度页面获取各节课的播放url
12.png
row39: 请求课程学习进度页面
row40: 将课程学习进度页面的数据BeautifulSoup化
13.png
row41: find_all查找出所有每节课的url
row42-44: 遍历打印每节课的url


4、根据各节课的播放url获取objectid
14.png
这里不能根据播放url直接拿到mp4原地址,查看播放地址有两个iframe,需要请求第一个iframe获取objectid来请求mp4的json
row49-51: 从播放url获取clazzid、courseid、knowledgeid
row55-63: 创建一个参数,其中num、ut、cpi、v是固定值
row64: 请求第一个iframe,获取其数据
row65: 等待5秒,请求过于频繁会报错
15.png
row66: 使用正则获取一窜包含objectid的数据
row67-70: 将数据转化为字典,课程讨论是空会报错,进行下一个遍历
row71-74: 获取objectid,非视频或非ppt课件会报错,进行下一个遍历
row75: 打印objectid

5、根据objectid请求获取mp4地址
16.png
row78: mp4_json地址
row79: 发送请求获取mp4的json数据
row80: 将数据转化为字典
row82-83: 视频名称和视频原地址

四、下载————————————————————————————————————
17.png
row88-97: 下载的header,如果刚开始说的将‘range’键的值改为'bytes=0-'下载后就可以观看了
row98: 请求下载地址
row99: 打印下载地址状态码,206表示成功请求
row100-102: 下载视频
18.png




五、结尾
————————————————————————————————————
1、我发现,写帖子比写代码难的多
2、有一个没做好的地方,就是只能下载二级目录的视频,没想到还有第三级目录,如row43的'leveltwo'
3、如果针对某一科目的视频下载,可以在row37修改,若全部都要下载就把row37-38注释掉
19.png



链接:https://pan.baidu.com/s/18xFmx3wp22IWr7fQiahdKA
提取码:y20p

免费评分

参与人数 27吾爱币 +40 热心值 +23 收起 理由
ajia + 1 + 1 热心回复!
贪睡的叶浠 + 1 + 1 我很赞同!
djawfi + 1 + 1 谢谢@Thanks!
99910369 + 1 + 1 谢谢@Thanks!
莫凉生 + 1 + 1 我很赞同!
1151425395 + 2 + 1 谢谢@Thanks!
jy132 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
苏紫方璇 + 10 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
TingSenQ + 1 + 1 发布原创作品,吾爱破解论坛因你更精彩!
scottxie99 + 1 + 1 谢谢@Thanks!
去追寻那心光 + 1 + 1 用心讨论,共获提升!
hwh425 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
黑熊 + 1 + 1 先收藏,感谢发布原创作品,吾爱破解论坛因你更精彩!
IRELAND353 + 1 我很赞同!
_小白 + 1 + 1 用心讨论,共获提升!
fub8 + 1 我很赞同!
zhangdashan391 + 1 + 1 用心讨论,共获提升!
waltzofjack + 1 只能膜拜
雷欧库珀 + 1 + 1 用心讨论,共获提升!
spen + 1 + 1 我很赞同!
登徒子道友 + 1 + 1 我很赞同!
zhu0598 + 1 + 1 谢谢@Thanks!
MockingJay + 1 用心讨论,共获提升!
夜泉 + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
小十二 + 2 + 1 鼓励转贴优秀软件安全工具和文档!
liu101816 + 2 + 1 用心讨论,共获提升!
笔墨纸砚 + 3 + 1 用心讨论,共获提升!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| xhtdtk 发表于 2021-4-14 21:08
灵影 发表于 2021-4-14 17:07
谢谢  一口气看完大佬的帖子,爬虫接触的不多。Python?晚上好多教程 良莠不齐啊。 谁有好的教程 网址发出 ...

入门是有点门槛,最重要是实践,不是学,每个教程都差不多
kafei000 发表于 2021-4-18 15:41
灵影 发表于 2021-4-14 17:07
谢谢  一口气看完大佬的帖子,爬虫接触的不多。Python?晚上好多教程 良莠不齐啊。 谁有好的教程 网址发出 ...

https://www.bilibili.com/video/BV1Yh411o7Sz?p=1
这个不错,评论里有别人得笔记,很详细
笔墨纸砚 发表于 2021-4-14 16:57
再改成一键全部爬取,然后保存起来,最好能使用多线程或者多进程,在或者搭配异步可能会更快。

免费评分

参与人数 1吾爱币 +2 热心值 +1 收起 理由
xhtdtk + 2 + 1 我很赞同!

查看全部评分

灵影 发表于 2021-4-14 17:07
谢谢  一口气看完大佬的帖子,爬虫接触的不多。Python?晚上好多教程 良莠不齐啊。 谁有好的教程 网址发出来瞧瞧。
落曌乾坤 发表于 2021-4-14 17:18
期待楼主继续改进并封装成软件
chhzll 发表于 2021-4-14 17:18
爬下来之后再 自动上传到网盘  本地直接删除 哈哈哈哈
黄金体验镇魂曲 发表于 2021-4-14 17:20
楼主厉害啊,学习了
liuweiheng 发表于 2021-4-14 17:21
感谢大佬分享爬虫过程
syea002 发表于 2021-4-14 17:30
感谢分享!
我马上过去 发表于 2021-4-14 17:33
能发点关于国开答题的么
qqy558 发表于 2021-4-14 18:00
不明觉厉,python基础知识学习中,懵懵懂懂
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 01:47

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表