【人工智能-03-06】20251227 人工智能第二学期课程 下载课件《教育设计中的信息化》中的“多人编辑文件” 的图片,然后合并PDF
发布时间:2026/10/2 8:06:41 作者:尧图编辑部 阅读量:1,286

背景需求马上人工智能课要考试了我要下载课件我把所有的课件mp4下载IDM下载。但是《教育设计中的信息化》里面并不是课件而是有文字、有视频、有音乐、有“在线多人编辑的ppt或docx”这种PPT右下角有下载按钮可以直接下载但是也有没有下载按钮的没有下载所以我用F12看后台代码可以点击看到每一页PPT的图片版本第一个PPT用豆包写了十几次才实现了需求需要先把图片的网址链接贴入同时要看看一共几张图片 爬虫下载网页里面的“在线多人协作”图片样式下载 写入图片.png的链接批量下载 豆包阿夏 20251226 import requests import os import time # 你需要修改的部分 # 1. 图片链接前缀固定部分把最后的1.png去掉 BASE_URL https://s3.ananas.chaoxing.com/sv-w3/doc/ae/83/c4/60a0b5114e957abf0fed3efcd263ac8d/thumb/ # 2. 下载的图片序号范围1到10 START_NUM 1 END_NUM 121 # 3. 清理后的Cookie替换为你的实际有效Cookie删除中文字符 CLEAN_COOKIE JSESSIONIDxxx; UID123456; _uid7890; ufxxx; vcxxx; _dxxx # 4. 保存路径桌面的123文件夹 SAVE_DIR rC:\Users\jg2yXRZ\OneDrive\桌面\123\自动下载的PNG图片 # # 请求头彻底解决编码问题 HEADERS { User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36, Cookie: CLEAN_COOKIE.encode(utf-8).decode(latin-1, errorsignore), Accept: image/avif,image/webp,image/png,image/svgxml,image/*;q0.8,*/*;q0.5, Referer: https://mooc1.chaoxing.com/ # 避免403权限错误 } # 创建保存文件夹自动创建不存在的文件夹 os.makedirs(SAVE_DIR, exist_okTrue) def download_png(url, save_path): 下载单张图片包含完整的异常处理 try: # 流式下载适合大图片 超时保护 response requests.get( url, headersHEADERS, timeout20, allow_redirectsTrue, streamTrue ) # 检查请求是否成功4xx/5xx错误会触发异常 response.raise_for_status() # 写入文件二进制模式避免图片损坏 with open(save_path, wb) as f: for chunk in response.iter_content(chunk_size8192): if chunk: # 过滤空数据块 f.write(chunk) return True except requests.exceptions.HTTPError as e: print(f❌ HTTP错误{e}可能是链接无效/权限不足) return False except requests.exceptions.Timeout: print(f❌ 下载超时链接{url}) return False except requests.exceptions.ConnectionError: print(f❌ 网络连接错误链接{url}) return False except Exception as e: print(f❌ 未知错误{e}) return False # 批量生成链接并下载主逻辑 success 0 fail 0 total END_NUM - START_NUM 1 print(f 开始下载 {START_NUM}-{END_NUM}.png 共 {total} 张图片...) print(f 保存路径{SAVE_DIR}\n) for num in range(START_NUM, END_NUM 1): # 自动拼接图片链接1.png → 10.png img_url f{BASE_URL}{num}.png # 生成文件名保留原始数字比如 1.png、2.png filename f{num:03}.png save_path os.path.join(SAVE_DIR, filename) print(f 正在下载 [{num-START_NUM1}/{total}]{filename}) time.sleep(1.5) # 延时1.5秒避免反爬限制 # 执行下载 if download_png(img_url, save_path): print(f✅ 下载成功{save_path}) success 1 else: print(f❌ 下载失败{img_url}) fail 1 # 下载结果汇总 print(\n *60) print(f 下载完成总计{total} | 成功{success} | 失败{fail}) print(f 最终保存路径{os.path.abspath(SAVE_DIR)}) if fail 0: print(⚠️ 失败原因可能Cookie过期/链接无效/网络问题请检查Cookie和链接前缀) 爬虫下载网页里面的“在线多人协作”图片样式下载 写入图片.png的链接批量下载 下载的图片合并PDF 豆包阿夏 20251226 import os from PIL import Image from fpdf import FPDF def images_to_pdf(folder_path, output_pdf): 将指定文件夹下的所有图片合并为PDF :param folder_path: 图片文件夹路径如123 :param output_pdf: 输出PDF的路径如merged_images.pdf # 支持的图片格式小写 supported_formats (.jpg, .jpeg, .png, .bmp, .gif) # 1. 获取文件夹下所有图片文件 image_files [] for file in os.listdir(folder_path): file_path os.path.join(folder_path, file) # 过滤文件是文件 后缀在支持列表中 if os.path.isfile(file_path) and file.lower().endswith(supported_formats): image_files.append(file_path) # 检查是否有图片 if not image_files: print(错误指定文件夹下未找到支持的图片文件) return # 2. 按文件名排序保证顺序 image_files.sort() print(f找到 {len(image_files)} 张图片开始合并...) # 3. 初始化PDF对象A4纸张单位mm pdf FPDF(unitmm, formatA4) try: for img_path in image_files: # 打开图片并处理 with Image.open(img_path) as img: # 转换为RGB避免透明通道/调色板问题 if img.mode ! RGB: img img.convert(RGB) # 获取图片尺寸像素 img_width, img_height img.size # A4纸尺寸mm210×297 pdf_width 210 pdf_height 297 # 计算图片在PDF中的缩放比例适配A4不超出边界 width_ratio pdf_width / img_width height_ratio pdf_height / img_height scale_ratio min(width_ratio, height_ratio) # 缩放后的图片尺寸 img_width_scaled img_width * scale_ratio img_height_scaled img_height * scale_ratio # 添加新页面 pdf.add_page() # 将图片添加到PDF居中显示 pdf.image( img_path, x(pdf_width - img_width_scaled) / 2, # 水平居中 y(pdf_height - img_height_scaled) / 2, # 垂直居中 wimg_width_scaled, himg_height_scaled ) print(f已添加{os.path.basename(img_path)}) # 4. 保存PDF文件 pdf.output(output_pdf) print(f✅ PDF合并完成文件保存至{os.path.abspath(output_pdf)}) except Exception as e: print(f❌ 处理失败{str(e)}) # 主程序执行 if __name__ __main__: # 配置参数图片文件夹当前目录下的123文件夹、输出PDF名称 IMAGE_FOLDER rC:\Users\jg2yXRZ\OneDrive\桌面\123\自动下载的PNG图片 # 图片文件夹路径 OUTPUT_PDF IMAGE_FOLDERr\merged_images.pdf # 输出PDF文件名 # 检查文件夹是否存在 if not os.path.exists(IMAGE_FOLDER): print(f错误文件夹 {IMAGE_FOLDER} 不存在) else: images_to_pdf(IMAGE_FOLDER, OUTPUT_PDF)第二个PPT最后把下载的图片做成PDF修改名称20251227今天正好去上师大听《教育设计中的信息化》的线下课老师讲课很生动说了很多有趣的教育信息化的案例。(*︶)