在学校内,老师可能出于版权考虑,课件不开放下载,但这给学生造成了极大的不便。
因为看课件的平台和课上答题互动的平台连在一起,这就导致每次答题都需要进行切换,极为麻烦。
正好,我玩过爬虫,于是便想到可以用爬虫来批量拉取课件图片,再整合成pdf。

图片元素获取

按F12打开开发者工具,通过右键检查,找到了课件图片的url链接。

观察发现,课件图片的页数正好对应着url次数的递增,这给批量爬取带来了极大的便利。

批量爬取图片

上传pdf是由一片片图片组成的,因此,不能完整地将源文件的pdf下载到,只能一张张地将课件图片爬取下来。

def download(pages, path):header = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_4) AppleWebKit/537.36 (KHTML, like Gecko) ''Chrome/52.0.2743.116 Safari/537.36'}i = 1for num in range(pages):url = change_url(i)response = requests.get(url=url, headers=header)img = response.contentwith open((path + "/%s.png") % i, 'wb') as f:f.write(img)i = i + 1def change_url(i):url = 'https://s3.ananas.chaoxing.com/doc/a8/21/ec/92a430a1e30c0009ec827b4269bc5357/thumb/'url = (url + "%s.png") % ireturn url

代码比较好理解,将需要下载的地址封装到change_url中,之后用经典的requests库发送请求,获取图片,写入文件。

将图片转换成pdf

这部分稍有难度,我参考了博主snrxian的文章python几行代码,把图片转换、合并为PDF文档

这里有一些坑需要注意:
1.png文件的编码是RGBA,需要用Img库的convert转换成RGB编码,否则转换成pdf的函数会报错。

2.使用os读取图片时,图片会出现乱序,在读取后需要重新根据名字排序。

代码函数:

def turnpic2pdf(path, name):img_open_list = []  # 创建打开后的图片列表for root, dirs, files in os.walk(path):files.sort(key=lambda x: int(x.split('.')[0]))  # 根据文件名排序# print(files)for i in files:file = os.path.join(root, i)  # 遍历所有图片,带绝对路径img_open = Image.open(file)  # 打开所有图片if img_open.mode != 'RGB':img_open = img_open.convert('RGB')  # 转换图像模式img_open_list.append(img_open)  # 把打开的图片放入列表pdf_name = name + '.pdf'  # pdf文件名img_1 = img_open_list[0]  # 打开的第一张图片# 把img1保存为PDF文件,将另外的图片添加进来,列表需删除第一张图片,不然会重复img_open_list = img_open_list[1:]img_1.save(pdf_name, "PDF", resolution=100.0, save_all=True, append_images=img_open_list)print('转换成功!pdf文件在当前程序目录下!')

附带main函数的完整代码

import requests
from PIL import Image
import osdef download(pages, path):header = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_4) AppleWebKit/537.36 (KHTML, like Gecko) ''Chrome/52.0.2743.116 Safari/537.36'}i = 1for num in range(pages):url = change_url(i)response = requests.get(url=url, headers=header)img = response.contentwith open((path + "/%s.png") % i, 'wb') as f:f.write(img)i = i + 1def change_url(i):url = 'https://s3.ananas.chaoxing.com/doc/a8/21/ec/92a430a1e30c0009ec827b4269bc5357/thumb/'url = (url + "%s.png") % ireturn urldef turnpic2pdf(path, name):img_open_list = []  # 创建打开后的图片列表for root, dirs, files in os.walk(path):files.sort(key=lambda x: int(x.split('.')[0]))  # 根据文件名排序# print(files)for i in files:file = os.path.join(root, i)  # 遍历所有图片,带绝对路径img_open = Image.open(file)  # 打开所有图片if img_open.mode != 'RGB':img_open = img_open.convert('RGB')  # 转换图像模式img_open_list.append(img_open)  # 把打开的图片放入列表pdf_name = name + '.pdf'  # pdf文件名img_1 = img_open_list[0]  # 打开的第一张图片# 把img1保存为PDF文件,将另外的图片添加进来,列表需删除第一张图片,不然会重复img_open_list = img_open_list[1:]img_1.save(pdf_name, "PDF", resolution=100.0, save_all=True, append_images=img_open_list)print('转换成功!pdf文件在当前程序目录下!')if __name__ == '__main__':path = "pic"  # 输入存放图片的路径pages = 70  # 输入需要爬取的图片页数name = '课件二'  # 输入保存的pdf名字download(pages, path)turnpic2pdf(path, name)

使用注意:
1、存放图片的文件夹须为空文件夹。
2、更换链接时,需要修改三个参数:1.图片页数pages,2.url,3.保存的pdf名字。
3、当图片过多时,download需要一定时间才能运行完,这时候可以先把后面的转换注释掉,分段运行。

声明

写在最后,声明一下:
本程序仅供学习交流,获取的课件仅供自己学习使用,不向外传播。

超星尔雅不让下载?课件,拿来吧你!相关推荐

  1. python机器语言直接用二进制代码表达指令_尔雅慕课搜题app,超星尔雅考试搜题,超星慕课查题app,学堂云搜题...

    尔雅慕课搜题app,超星尔雅考试搜题,超星慕课查题app,学堂云搜题 更多相关问题 [判断题]网络促销的作用主要是促进销售. (5.0分) [填空题]企业在进行网络营销时必不可少的促销方式和手段是( ...

  2. 要关闭python解释器可使用函数或者快捷键_超星尔雅中华传统文化之戏曲瑰宝第七章节测验网课答案选修课慕课答案...

    超星尔雅中华传统文化之戏曲瑰宝第七章节测验网课答案选修课慕课答案 更多相关问题 [多选题]2018年6月初,某企业无形资产账面价值为1 000万元,采用直线法摊销.6月份发生相关业务如下: (1)1日 ...

  3. 计算机发生死机故障时 重新启动机器,超星尔雅高三语文 诗歌鉴赏复习章节测试答案...

    超星尔雅高三语文 诗歌鉴赏复习章节测试答案 超星测试根据GB50856-2013通用安装工程工程量计算规范,水表的计量单位是(). 粉煤灰用于混凝土中有(),尔雅(),(),()的功效 胶凝材料指用于 ...

  4. 计算机应用技术python_超星尔雅大学计算机应用技术02PythonB章节答案,智慧树章节答案...

    超星尔雅大学计算机应用技术02PythonB章节答案,智慧树章节答案 更多相关问题 O2O成败因素中最关键的是 阿托品对眼睛的作用是 我国奴隶制监狱的称呼有( ) 戒断症状观察,按症状严重程度分为( ...

  5. android测试 课程设计,超星尔雅Android开发课程设计章节测试答案

    超星程设3.输送尿液的器官是 工厂电力线路的接线方式有.尔雅.. 一般情况下,发课工频的频率偏差一般不超过Hz 计章节测中性点接地是接地 对继电保护的基本要求包括.试答... 超星程设电力变压器的通常 ...

  6. JAVA可以赋值分数吗,信息技术支持下的教学反思超星尔雅网课答案

    参考答案如下 信息下Li: Hi, Wang Lin. Haven't seen you for ages! Wang: Hi, Li Ming. __________________________ ...

  7. 计算机专业里的麦课尔雅,艺术导论超星尔雅网课答案2020年_高校邦_计算机文化基础_章节答案...

    参考答案如下 艺术下列哪项不是中医食疗学的地位和价值?( ) 下列幼儿艺术活动的描述中,导论答案较差的是: []生物体内,超星础章天然存在的DNA分子多为负超螺旋. 尔雅花坛或草坪花丛设计时应当注意哪 ...

  8. 编写一个python程序用来计算投资回收期_程序设计基础(Python)超星尔雅章节答案...

    程序超星生活中的废旧品里只有纸盒适合制作汽车 甲方案净现值为8600元,设计内含报酬率为10%:乙方案净现值为6800元,内含报酬率为15%.则下列说法正确的有: 投资项目决策评价中的现金流量,基础实 ...

  9. html文档中用于表示页面标题的标记对是,汽车发动机拆装与检修实训超星尔雅答案...

    摘要: 汽车生活事件也称为应激源( )在教师的直接领导下整个班级的学生一起进行的学习,机拆检修称为( )实训教学二字连用最早出自( )... 汽车生活事件也称为应激源( ) 发动下列不属于课程与教学关 ...

  10. java 命令行 生成exe_超星尔雅中国古建筑文化与鉴赏期末答案

    摘要: 超星会客时上座位置排列的几个要点是?( )中国筑文文献内容特征的检索途径有?超星移动图书馆除了可以检索图书外,古建还可以检索期刊.学位论论文.会议论文.报纸等资源... 超星会客时上座位置排列 ...

最新文章

  1. python基础---元组、字典、函数、文件、异常
  2. 4.html 头部随笔
  3. PHP一些十分严重的缺陷
  4. WPF 第一个创建的窗体会作为Application.Current.MainWindow
  5. python 中用什么键缩进 —— tab 还是空格?
  6. 汽车穿越沙漠的算法问题(反推法)
  7. mysql pt-kill_percona-toolkit之pt-kill 杀掉mysql查询或连接的方法
  8. 2.3.5 mysql角色管理
  9. Windows Server 2008 R2 遗忘管理员密码后的解决方法-by iLync
  10. C#使用StreamReader类读取文件文件
  11. mac android 录屏软件下载,苹果录屏app下载 苹果录屏 for Android V2.1.3 安卓手机版 下载-脚本之家...
  12. SpringMVC 之类型转换Converter 源代码分析
  13. 量化策略回测TRIXKDJ
  14. 易语言大漠插件模块制作设置字库及OcrEx识别字符串
  15. TCP/IP的安全缺陷
  16. 大学计算机教师招聘试讲什么,应聘高校教师面试,试讲注意事项
  17. GEO数据库数据下载
  18. ELK日志管理系统的搭建
  19. mysql list dbs 代替_mysql_list_dbs函数的用法实例汇总
  20. 做网站windows和linux哪个好,做网站永Linux系统服务器到底有什么优势?

热门文章

  1. Lattice Diamond软件使用
  2. 字体裁剪,精简字体,字体瘦身:FontSubsetGUI,FontCreator,FontPruner
  3. CDA数据分析师-LEVEL I考试-分享
  4. Android聊天软件开发(基于网易云IM即时通讯)——环境搭建(一)
  5. 某型火炮随动控制系统测试研究
  6. WPF入门教学(C#窗口、客户端)
  7. 简单C语言程序的编写,c语言编写简单程序.doc
  8. c++语言编程软件视频教程下载,C++编程开发全套视频教程下载
  9. 2020年C语言编程软件,c语言编程软件-精易csharp编程助手下载2020.07 正式安装版_久友下载站...
  10. 软件开发各类文档模板