Foair / course-crawler

🎓 中国大学MOOC、学堂在线、网易云课堂、好大学在线、爱课程 MOOC 课程下载。
https://mooc.xoy.io
MIT License
774 stars 196 forks source link

网易云课堂课程,下载得到的附件压缩包(主要是代码文件)显示损坏无法打开 #17

Closed Oshibuki closed 5 years ago

Oshibuki commented 6 years ago

(错误简述)

网站:网易云课堂 MOOC

课程地址:https://mooc.study.163.com/learn/1000013001?tid=2001493000

问题描述:下载课程附件(主要是代码压缩包),显示压缩包损坏无法打开

SigureMo commented 6 years ago

全部这样吗?删掉重试呢?使用文本编辑器打开看看,里面是二进制内容还是HTML的"页面错误"内容

SigureMo commented 6 years ago

有空加个Debug用的log文件吧 @Foair 把网址等信息,都记录下来,他这个还真不好测试……

Oshibuki commented 6 years ago

这个是用notepad++打开后显示的

1.3.1 HttpDemoAndPPT.zip

SigureMo commented 6 years ago

喵?Σ(⊙▽⊙"a我直接用requests测试是可以下的,那个文件修改扩展名为HTML后打开也是自动跳转下载的,emmmmmmm不资到为撒能把那个页面download下来

SigureMo commented 6 years ago

问题在我的课程C++程序设计入门(下)重现
解决方法: 经测试,使用session的CANDY对课件进行下载将会重定向到一个页面后使用js进行下载,而直接使用requests则会直接下载内容,故可以直接使用requests下载或者使用参数将session注释掉,两者选择其一即可,建议使用第二种

  1. file_name = '%s %s' % (counter, file_name) # 下面是要修改的内容
    with open(WORK_DIR.file(file_name), 'wb') as f:
    r = requests.get('https://www.icourse163.org/course/attachment.htm', params=params)
    f.write(r.content)
  2. file_name = '%s %s' % (counter, file_name) # 下面是要修改的内容
    CANDY.download_bin('https://www.icourse163.org/course/attachment.htm',
                                    WORK_DIR.file(file_name), params=params, cookies={'STUDY_SESS': None})

位置在study_mooc.py 167行左右