教学立方的课件怎么导出
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了教学立方的课件怎么导出相关的知识,希望对你有一定的参考价值。
爬取教学立方上的pdf 原创2020-03-24 22:24:26
贺大炮
码龄4年
关注
爬取教学立方上的pdf
有更简单的方法!
准备
代码
参数设置
进入课件
获得课件图片的url
存储图片并转化为pdf
注意事项
教学立方是一个辅助上网课的平台,老师可以在上面发布课程相关的pdf,但是有时候老师并不会给文件设置下载。本文运用python以一个并不算简便的方法爬取教学立方上的pdf。
有更简单的方法!
有更简单的方法,可以直接下载,比直接爬出来的清晰多了!这个代码还是有兴趣再用吧,毕竟还要准备辣么多东西。
参考:
https://mp.weixin.qq.com/s/xXWPwoZDtbEBPtYNasgq4g
准备
一台装了python的电脑
安装chrome浏览器
安装相应版本的chromedriver
安装selenium,bs4,requests,img2pdf包
代码
参数设置
import time
from selenium import webdriver
from bs4 import BeautifulSoup
import requests
import img2pdf
import os
import shutil
url=[]
phonenumber=''
password='' # 在这里输入你的账号、密码
coursename='近代物理'
chromedriver = r"C:\Program Files (x86)\Google\Chrome\Application\chromedriver" # 看你的chromedriver安装路径
1
2
3
4
5
6
7
8
9
10
11
12
13
1
2
3
4
5
6
7
8
9
10
11
12
13
进入课件
browser = webdriver.Chrome(chromedriver)
browser.get("https://teaching.applysquare.com/S/Index/index.html")
browser.maximize_window()
browser.find_element_by_xpath("/html/body/div[2]/div/div[2]/div/div/div/div/div[2]/div/div/div[1]/input").send_keys(phonenumber)
browser.find_element_by_id("id_login_password").send_keys(password)
time.sleep(3)
browser.find_element_by_id("id_login_button").click() # 完成登录
time.sleep(3)
[k for k in browser.find_elements_by_class_name("coursename") if k.text=='课程 : '+coursename][0].click() # 点进相应课程
time.sleep(2)
browser.find_element_by_xpath('//*[@id="wrapper"]/div/div[1]/div/div/ul/li[2]/a/img').click() # 点击资源
time.sleep(2)
browser.find_element_by_xpath('//*[@id="wrapper"]/div/div[1]/div/div/ul/li[2]/ul/li[2]/a').click() # 点击课件
1
2
3
4
5
6
7
8
9
10
11
12
13
1
2
3
4
5
6
7
8
9
10
11
12
13
现在你已经能够看见老师发布的许多课件了,由于课件名称多样,懒得编代码,需要自己手动点击“查看”
获得课件图片的url
time.sleep(5) # 手动点击“查看”
#现在已经能够看到课件的第一页了
filename=browser.find_element_by_xpath('//*[@id="content_right"]/div[1]/div[1]/div[2]/div/div[1]/span').text # 获取文件名
max_page=int(browser.find_elements_by_class_name("t-gray")[-1].text[1:])
for i in range(max_page-1):
browser.execute_script('window.scrollBy(0,25000)')
content=BeautifulSoup(browser.page_source,'html5lib')
pic=content.find_all('div','lesson-pdf-content')[0].img.attrs['src']
url.append(pic)
#browser.find_elements_by_tag_name("input")[0].send_keys(i+2) # 这个是直接跳转页面
time.sleep(1)
browser.find_element_by_xpath('//*[@id="content_right"]/div[1]/div[1]/div[3]/div/div[1]/a[2]').click()
# 进入下一页
browser.execute_script('window.scrollBy(0,25000)')
content=BeautifulSoup(browser.page_source,'html5lib')
pic=content.find_all('div','lesson-pdf-content')[0].img.attrs['src']
url.append(pic) # 由于循环设置不佳,这里还需要得到最后一个网址
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
但是有的时候老师上传的是个pptx,下载下来还打开不了,如果后面报错的话,你可以试着打开一个网址,看看下载下来的是什么东西。
存储图片并转化为pdf
folder = os.getcwd() + '\\'+coursename+'图片'
os.makedirs(folder) # 创建一个暂时放图片的文件夹
for i in range(len(url)):
r = requests.get(url[i])
with open(folder+'\\'+str(i)+'.png', 'wb') as f:
# 对于图片类型的通过r.content方式访问响应内容,将响应内容写入png中
f.write(r.content)
def from_photo_to_pdf(photo_path):
# 1、生成地址列表
photo_list = os.listdir(photo_path)
photo_list.sort(key = lambda x: int(x[:-4]))
photo_list = [os.path.join(photo_path,i) for i in photo_list]
# 1、指定pdf的单页的宽和高
a4inpt = (img2pdf.mm_to_pt(794), img2pdf.mm_to_pt(1122)) # 爬不同pdf记得改尺寸960,720;793,1122;
layout_fun = img2pdf.get_layout_fun(a4inpt)
with open(os.getcwd()+'\\'+coursename+filename+'炮'+'.pdf', 'wb') as f: # 文件名格式不一样,需要加一个字防错
f.write(img2pdf.convert(photo_list, layout_fun=layout_fun))
if __name__ == '__main__':
photo_path = folder
from_photo_to_pdf(photo_path)
shutil.rmtree(folder) # 删除存放图片的文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
注意事项
有个地方需要自己手动点击
只能用于下载pdf,有的时候老师发布的是pptx就不太行 可以爬pptx,不过点进网址直接下载下来打不开,用requests就行了
这个代码只是写着玩的,不建议传播老师的课件。
以同样的原理可以爬取很多东西。 参考技术A 教学立方的课件在点击上方的“保存”或“另存为”选项将课件进行导出,只需要选择合适的路径进行保存即可。
以上是关于教学立方的课件怎么导出的主要内容,如果未能解决你的问题,请参考以下文章
互动教学经验-如何完美转换PPT课件为白板互动课件(动画转换)