Skip to content

ShevonKuan/yuektang_ppt2pdf

Repository files navigation

雨课堂课件下载器

Shevon Kuan

  • 目前支持大部分雨课堂

心路历程

超级讨厌雨课堂的课件导出功能.说是保护老师的版权,实则在每一张课件上加上了自己的logo,这叫保护老师的版权?是你想吞占老师的成果,打上自己的名字吧.老师的课件为啥不写老师的名字,偏偏写上雨课堂?

为此,作者开发了这个简单的软件.

雨课堂的课件打印页面是动态生成的,而且会与后端联系获取sessionid所对应的处于打开状态的课件id.我首先考虑的是,逐行阅读该逻辑所对应的js文件(几万行),使用python重现该逻辑,以实现对动态页面的爬取.缺点:

  • 需要访问系统敏感目录获取浏览器对应的cookies文件以获取sessionidcrftoken.
  • 模拟网页渲染过程需要的逻辑复杂,花费了大量的精力去实现后发现爬取速度非常慢,这远比直接看网页慢,不实际.

然后我考虑使用浏览器模拟操作的方法使用selenium库,缺点:

  • 过程十分不友好,需要用户重复登录,并且会产生较多的无必要的页面刷新和跳转以重新获取domain等cookie键值对.
  • 每一次爬取后需要重新调用beautifulsoup进行分析,即每导出一个pdf就需要重新运行一次程序(或循环体),既不美观又不高效

最后,我使用了油猴脚本结合本地flask服务器的方式.巧妙结合了JavaScript对页面dom元素的操作能力和python极其丰富的功能.提出前端侵入性脚本辅助python进行爬虫的全新爬虫形式.

使用说明(需要启动后端,该方法已弃用)

  1. 下载并解压releases中最新的软件包,将YuKeTang_Print2PDF.js添加到油猴控制台或者使用greasyfork链接进行添加 https://greasyfork.org/zh-TW/scripts/425490-%E9%9B%A8%E8%AF%BE%E5%A0%82%E8%AF%BE%E4%BB%B6%E5%AF%BC%E5%87%BA%E4%B8%BApdf
  2. 双击打开课件打印服务器.exe,第一次使用请放行防火墙
  3. 打开对应的课件页面点解打印后将会跳转到https://changjiang.yuketang.cn/web/print该链接,在该页面打印的地方将会出现脚本打印的按钮,点击即可运行,状态可以在课件打印服务器.exe的窗口中看到.

使用说明(建议使用)

  1. 使用greasyfork链接进行添加https://greasyfork.org/zh-TW/scripts/454520-%E9%9B%A8%E8%AF%BE%E5%A0%82%E8%AF%BE%E4%BB%B6%E5%AF%BC%E5%87%BA%E4%B8%BApdf-%E6%97%A0%E5%90%8E%E7%AB%AF%E7%89%88%E6%9C%AC,该版本使用jsPDF在线生成pdf,不需要启动后端.
  2. 打开对应的课件页面点解打印后将会跳转到https://changjiang.yuketang.cn/web/print该链接,在该页面打印的地方将会出现脚本打印的按钮,点击即可运行,状态可以在课件打印服务器.exe的窗口中看到.