【python】无限量PPT免费下载?找模板在不怕心仪得不能用啦

news2025/1/27 13:08:58

前言

大家早好、午好、晚好吖 ❤ ~欢迎光临本文章

开发环境:

  • python 3.8

  • pycharm

不会安装的可以文末名片+我获取哦 😎

模块使用:

第三方模块,需要安装

win + R 输入cmd 输入安装命令 pip install 模块名

(如果出现爆红 可能是因为 网络连接超时 切换国内镜像源)

  • requests

内置模块

  • re

代码实现步骤:

基本四大步骤 发送请求 -> 获取数据 -> 解析数据 -> 保存数据

  1. 发送请求, 模拟浏览器对url地址发送请求

    请求链接 --> PPT列表页面: https://***/moban/

  2. 获取数据, 获取 PPT列表页面 网页源代码

  3. 解析数据, 提取我们想要的数据内容 < aid参数 / ppt标题 >

  4. 发送请求, 模拟浏览器对url地址发送请求

    请求链接 --> PPT下载页面: https://***/plus/download.php?open=0&aid={aid参数}&cid=3

  5. 获取数据, 获取 PPT下载页面 网页源代码

  6. 解析数据, 提取我们想要的数据内容 < ppt压缩包下载地址 >

  7. 保存数据, 把ppt压缩包数据保存本地文件夹

代码展示

# 导入数据请求模块 --> 第三方模块, 需要安装 pip install requests
import requests
# 导入正则表达式模块 --> 内置模块, 不需要安装
import re
# 导入进度条
from tqdm import tqdm

“”"

  1. 发送请求, 模拟浏览器对url地址发送请求

    • <Response [200]> 表示请求成功

      requests <手机>

      url <电话号码>

      requests.get(url) <拨号>

      <Response [200]> <电话打通了>

分析 PPT列表页面 请求链接变化规律

“”"

多页采集

for page in range(2, 194):
    print(f'------------正在采集第{page}页的数据内容------------')

请求链接 PPT列表页面

    url = f'https://****/moban/ppt_moban_{page}.html'

加入伪装

    headers_1 = {
        # 'Cookie': '__51vcke__Je1p5lxAB8oshp4Q=a2d09e14-b8e3-549b-8f57-6aca0caa5b7c; __51vuft__Je1p5lxAB8oshp4Q=1653891497436; __gads=ID=692fabf3df9f56a5-222407aa9bd3001e:T=1653891498:RT=1653891498:S=ALNI_MZpycjl_goCBeDo2c9SHKGt40wXzQ; __bid_n=18432ecf98ba9acd9e4207; FPTOKEN=30$1DzFg9/Q5i/1OYLGx8BGVb1DDCKC+Gz58Jrwp1AzRDntdzyLdjrMqJIhdpXsGktzZYiZA7eZE4m32nad5rK0TbanAbCcyCxZrcsnriCl9YmmC5UN4bqieT032UzJlT53xEUd1j1vpWC+p2NI70JLAubaanckO+d82HROhCY1Lh5lulkTGCAdfPKCZz2S8OPONy0NyL8GsKWfKGM95ReKgAtoJL0ngVj0smpDEsTFGOaPSW0M+dsO0gUmneWw05mgySVC71/qbUUG8o3mKEyD5aBnZdYUFP8ig8mnH2xVizJkAPRbXeRELe5e9Fk5DM9pZlZooM7+L8NQuSua5rakld1fZXhXX3vsH9w8lGYHQhKrU/9HDlhKZzcBgVRZIoDB|QmVxOaY5NuD0YXxzaJ0mCnE/9qJLssQcIEB76DcwEGA=|10|946497589a754b58cc2352d773d7c8ab; _tcnyl=1; FPTOKEN=ZoGr4lqRpDB41aS7g3xbphkNZxlAFkMrslWEy2CJ+sJG7a0uxWmB0OK4zvSzYlUIAyPbHFd2qaqVHYwEI55/5irbrxKYI8Vd1fujkpMY+9HkcQw/QadJLWoHpVPupduCcPwfWxY33ihlqzEjtKiiNB3oq3b81i61ONtX77MQyiMYXoXXqW0QWQB2EVlg8qO2wiEbHCR+PiPSEQqmbP5Q96aFOMITQ8d8UVupKIphS4IsNM3qrx5lv1CDcUpew1Hf6aDUIQ5cvPp89BOCvyPlotw1XYJMLhz3z8Dq0+PWbZVdHy31HRxy1QZN4YKbZce/wVsmNNctThVXPYZiWJxsLfusq51dpBeNQZ5jvXyYj1CtF1commhHj/AyhOtfDgNERt9Vj9AzhMteoP6fhEDquA==|uPT50p/sXbaj1jWrP5LTDsFYuTBOKGVO+5MF4s+Jb8c=|10|82feab40fd6338ee92047277cdbe5297; acw_sc__v2=643e912a51d7da10f6ad3d5cc1d79f0d6593c37f; __gpi=UID=0000060294537c8f:T=1653891498:RT=1681822116:S=ALNI_MZtPzSlNJpybAKucVMv0sKEvcwOjg; acw_tc=276077b216818245849326986e88fe8a2f8d876a94ab44cc5122ad34acd3cd; __51uvsct__Je1p5lxAB8oshp4Q=17; __vtins__Je1p5lxAB8oshp4Q=%7B%22sid%22%3A%20%22a46f87fa-bb28-5e18-b3bf-a82380a1b6eb%22%2C%20%22vd%22%3A%207%2C%20%22stt%22%3A%20226266%2C%20%22dr%22%3A%20104449%2C%20%22expires%22%3A%201681826611441%2C%20%22ct%22%3A%201681824811441%7D',
        # 'Referer': f'https://****/moban/ppt_moban_{page}.html',
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.0.0 Safari/537.36'
    }
    # 发送请求
    response = requests.get(url=url, headers=headers_1)

“”"

  1. 获取数据, 获取 PPT列表页面 网页源代码

    response.text 获取响应文本数据

  2. 解析数据, 提取我们想要的数据内容 < aid参数 / ppt标题 >

    正则表达式

    re.findall(‘什么数据’, ‘什么地方’) --> 调用re模块里面findall方法 <找到所有我们想要的数据>
    你从什么地方, 去匹配什么数据

“”"

    # 转码
    response.encoding = 'gb2312'
    # 提取数据 < aid参数 / ppt标题 >
    info = re.findall('<h2><a href="/article/(.*?).html" target="_blank">(.*?)</a></h2>', response.text)

    # for循环遍历, 把列表里面元素一个一个提取出来
    for aid, title in info:

“”"

  1. 发送请求, 模拟浏览器对url地址发送请求

    请求链接 --> PPT下载页面

    • 打开开发者工具: F12

    • 刷新网页

    • 选中请求数据包, 点击数据包

    • 选择headers下面 request headers

    批量替换:

    • 选中替换内容 ctrl + R

    • 勾选 .* 正则

    • 输入正则匹配命令

      (.?): (.)

      ‘$1’: ‘$2’,

“”"

        # 字符串格式化方法
        link = f'https://****/plus/download.php?open=0&aid={aid}&cid=3'
        print(link)
        # 伪装模拟浏览器 headers
        headers = {
            'Cookie': 'mizToken=202206071322080.098771721239192310.8670471172054548; __51vcke__Je1p5lxAB8oshp4Q=a2d09e14-b8e3-549b-8f57-6aca0caa5b7c; __51vuft__Je1p5lxAB8oshp4Q=1653891497436; __gads=ID=692fabf3df9f56a5-222407aa9bd3001e:T=1653891498:RT=1653891498:S=ALNI_MZpycjl_goCBeDo2c9SHKGt40wXzQ; __bid_n=18432ecf98ba9acd9e4207; FPTOKEN=30$1DzFg9/Q5i/1OYLGx8BGVb1DDCKC+Gz58Jrwp1AzRDntdzyLdjrMqJIhdpXsGktzZYiZA7eZE4m32nad5rK0TbanAbCcyCxZrcsnriCl9YmmC5UN4bqieT032UzJlT53xEUd1j1vpWC+p2NI70JLAubaanckO+d82HROhCY1Lh5lulkTGCAdfPKCZz2S8OPONy0NyL8GsKWfKGM95ReKgAtoJL0ngVj0smpDEsTFGOaPSW0M+dsO0gUmneWw05mgySVC71/qbUUG8o3mKEyD5aBnZdYUFP8ig8mnH2xVizJkAPRbXeRELe5e9Fk5DM9pZlZooM7+L8NQuSua5rakld1fZXhXX3vsH9w8lGYHQhKrU/9HDlhKZzcBgVRZIoDB|QmVxOaY5NuD0YXxzaJ0mCnE/9qJLssQcIEB76DcwEGA=|10|946497589a754b58cc2352d773d7c8ab; _tcnyl=1; FPTOKEN=ZoGr4lqRpDB41aS7g3xbphkNZxlAFkMrslWEy2CJ+sJG7a0uxWmB0OK4zvSzYlUIAyPbHFd2qaqVHYwEI55/5irbrxKYI8Vd1fujkpMY+9HkcQw/QadJLWoHpVPupduCcPwfWxY33ihlqzEjtKiiNB3oq3b81i61ONtX77MQyiMYXoXXqW0QWQB2EVlg8qO2wiEbHCR+PiPSEQqmbP5Q96aFOMITQ8d8UVupKIphS4IsNM3qrx5lv1CDcUpew1Hf6aDUIQ5cvPp89BOCvyPlotw1XYJMLhz3z8Dq0+PWbZVdHy31HRxy1QZN4YKbZce/wVsmNNctThVXPYZiWJxsLfusq51dpBeNQZ5jvXyYj1CtF1commhHj/AyhOtfDgNERt9Vj9AzhMteoP6fhEDquA==|uPT50p/sXbaj1jWrP5LTDsFYuTBOKGVO+5MF4s+Jb8c=|10|82feab40fd6338ee92047277cdbe5297; __gpi=UID=0000060294537c8f:T=1653891498:RT=1681822116:S=ALNI_MZtPzSlNJpybAKucVMv0sKEvcwOjg; acw_tc=276077b216818245849326986e88fe8a2f8d876a94ab44cc5122ad34acd3cd; __51uvsct__Je1p5lxAB8oshp4Q=17; acw_sc__v2=643e9ca58cde54eeeb856549844efeccbfb00b49; __vtins__Je1p5lxAB8oshp4Q=%7B%22sid%22%3A%20%22a46f87fa-bb28-5e18-b3bf-a82380a1b6eb%22%2C%20%22vd%22%3A%2010%2C%20%22stt%22%3A%20384263%2C%20%22dr%22%3A%2038456%2C%20%22expires%22%3A%201681826769438%2C%20%22ct%22%3A%201681824969438%7D',
            'Referer': f'https://*****/plus/download.php?open=0&aid={aid}&cid=3',
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.0.0 Safari/537.36',
        }
        # 发送请求
        response_1 = requests.get(url=link, headers=headers)
        print(response_1.text)

“”"

  1. 获取数据, 获取 PPT下载页面 网页源代码

    请问: 为什么我请求获取网页源代码和网站上面显示不一样?

    答: 被反pa了, 因为没有伪装, 模拟, 被识别出来是程序, 从而得不到数据内容

    解决: 加headers请求头

  2. 解析数据, 提取我们想要的数据内容 < ppt压缩包下载地址 >

“”"

        # 提取下载链接
        download = re.findall('<li class="c1"><a href="(.*?)"', response_1.text)[0]

“”"

  1. 保存数据, 把ppt压缩包数据保存本地文件夹

    发送请求 + 获取数据

“”"

        # 发送请求获取数据
        content = requests.get(url=download).content
        with open('ppt\\' + title + '.zip', 'wb') as f:
            # 写入内容
            f.write(content)
        print(title, download)

尾语 💝

好了,今天的分享就差不多到这里了!

完整代码、更多资源、疑惑解答直接点击下方名片自取即可。

对下一篇大家想看什么,可在评论区留言哦!看到我会更新哒(ง •_•)ง

喜欢就关注一下博主,或点赞收藏评论一下我的文章叭!!!

最后,宣传一下呀~👇👇👇更多源码、资料、素材、解答、交流皆点击下方名片获取呀👇👇👇

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/521384.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

5分钟搞懂矩阵乘法的本质

大家好啊&#xff0c;我是董董灿。 很多与深度学习算法相关的面试&#xff0c;面试官可能都会问一类问题&#xff0c;那就是你是如何理解矩阵乘算法的。 更有甚者&#xff0c;会让你当场手写矩阵乘算法&#xff0c;然后问细节&#xff0c;问如何优化&#xff0c;面试现场&…

【MATLAB第31期】基于MATLAB的降维/全局敏感性分析/特征排序/数据处理方法MATLAB代码实现(持续更新)

【MATLAB第31期】基于MATLAB的降维/全局敏感性分析/特征排序/数据处理方法MATLAB代码实现(持续更新) 一、降维方法 常见的降维方法&#xff1a; 1.变量归类&#xff08;主成分分析PCA、核主成分分析KPCA&#xff09; 2.变量筛选&#xff08;临近成分分析NCA、皮尔逊系数PCC、…

签名预售活动圆满结束!各位敬等快递,第一个付款的兄弟来领取大礼!

我的新书经过千难万险终于上架&#xff0c; 为了感谢众多老铁的支持&#xff0c; 所以上周日搞了签名预售的活动&#xff0c;挂了300本&#xff0c; 一上线很快就被大家买光了&#xff0c; 留言需要单独写一些话的老铁&#xff0c;我也都尽量满足了&#xff0c; 如果一楼还…

HNU-操作系统OS-实验Lab5

OS_Lab5_Experimental report 湖南大学信息科学与工程学院 计科 210X wolf &#xff08;学号 202108010XXX&#xff09; 实验目的 了解第一个用户进程创建过程了解系统调用框架的实现机制了解ucore如何实现系统调用sys_fork/sys_exec/sys_exit/sys_wait来进行进程管理 实验…

计算机组成原理基础练习题第一章

有些计算机将一部分软件永恒地存于只读存储器中&#xff0c;称之为&#xff08;&#xff09; A.硬件    B.软件C.固件    D.辅助存储器输入、输出装置以及外界的辅助存储器称为&#xff08;&#xff09; A.操作系统    B.存储器 C.主机      D.外围设备完整的计算机系…

算法时间空间复杂度

文章目录 算法算法特性 时间复杂度时间复杂度概念算法运行时间例如时间复杂度分三种 空间复杂度 算法 算法特性 1.有穷性&#xff1a;执行有穷步&#xff08;有限步&#xff09;之后结束。 2.确定性&#xff1a;只有唯一的执行路径。 3.可行性&#xff1a;代码可以执行起来…

2023年数维杯ABC选题人数公布

根据各个平台开赛后28小时各项数据统计&#xff0c;进行评估&#xff08;方法见注释&#xff09;&#xff0c;最终得出2023年数维杯选题人数&#xff0c;大致为 A:B:C260&#xff1a;281&#xff1a;40 题号选题人数A260B281C40 选题人数统计结果分析&#xff1a;AB为研究生本…

vue3开启大海贼时代!!!

大海贼时代结束&#xff01;&#xff01;&#xff01; vue3开始&#xff01;&#xff01;&#xff01; setup初体验 1.与vue2不同的是 定义的变量和方法都被放到一个叫 setup( )里面了 2.vue2里面没有了 this 3. 1&#xff09;访问变量先定义 const msg 1 2&#xff0…

[架构之路-196] - 发现问题原因的通常步骤:提出问题、明确问题、偏差分析、因素分析、原因分析

目录 前言&#xff1a; 通用问题的方法论 第一步&#xff1a;是提出问题阶段&#xff1a;表象、总体、大致 第二步&#xff1a;是明确问题阶段&#xff08;深层&#xff09;&#xff1a;分解、分类、排序 第三步&#xff1a;是明确问题阶段&#xff08;目标&#xff09;&a…

关于一个C++项目:高并发内存池的开发过程(一)

原项目地址&#xff1a;高并发内存池项目: 高并发内存池项目的课堂板书代码 (gitee.com) 写在前面 本打算利用五一假期的时间将这个项目一口气开发完成&#xff0c;但由于本人的懈怠&#xff0c;这个项目最终只完成了80%。于是利用长假后的一天假期&#xff0c;将这个项目的框…

springboot整合security,mybatisPlus,thymeleaf实现登录认证及用户,菜单,角色权限管理

介绍 本系统为springboot整合security&#xff0c;mybatisPlus&#xff0c;thymeleaf实现登录认证及用户&#xff0c;菜单&#xff0c;角色权限管理。页面为极简模式&#xff0c;没有任何渲染。 源码&#xff1a;https://gitee.com/qfp17393120407/spring-boot_thymeleaf 开发…

算法训练Day59:503.下一个更大元素II 42. 接雨水

文章目录 [下一个更大元素 II](https://leetcode.cn/problems/next-greater-element-ii/description/)题解 接雨水题解 下一个更大元素 II CategoryDifficultyLikesDislikesContestSlugProblemIndexScorealgorithmsMedium (66.68%)8060--0 Tags 堆 | 数组 | 单调栈 Compani…

企业信息化战略与实战(三)-企业信息化与电子商务概念

上面我们了解了政府信息化与企业信息化的部分概念,今天继续了解企业信息化的相关概念和电子商务相关概念。 1、决策支持系统(DSS) 了解基本理念和组成部分即可. 决策支持系统的作用一般是供决策,做辅助用途的系统,当你做一个决策的时候,你可以需要给你的决策做支持。比如…

05- redis集群模式搭建(上) (包含云服务器[填坑])

目录 1. 准备环境: 2. 简介: -> 2.1 前言: -> 2.2 Redis集群架构实现了对redis的水平扩容 -> 2.3 redis cluster集群原理 3. 搭建后特别需要注意的问题 ->3.1 [重点]: 如果一个服务出现故障: 是否可以继续提供服务??? ---> 3.1.1 如果集群中故障re…

PCIe的capability扩展空间字段解释

解释 这是一段关于高级错误报告的信息&#xff0c;其中包含多个字段和值。以下是每个字段的详细解释&#xff1a; Capabilities: [100 v1] Advanced Error Reporting 这是该设备支持高级错误报告的能力标识符。 UESta: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- R…

python的文件操作模块shutil和pathlib总结

一&#xff1a;shutil模块 1&#xff0c;shutil模块安装 pip insatll shutilwhich 2&#xff0c;shutil支持的方法 可以通过dir(shutil)查看shutil支持的方法和属性 [Error, ExecError, ReadError, RegistryError, SameFileError, SpecialFileError, _ARCHIVE_FORMATS, _BZ2_…

当列车穿过时空隧道:解密力扣“计算列车到站时间”

本篇博客会讲解力扣“2651. 计算列车到站时间”的解题思路&#xff0c;这是题目链接。 先来审题&#xff1a; 以下是输出示例&#xff1a; 以下是提示&#xff1a; 这道题是给大家树立信心的。计算方法&#xff1a;(预期时间延误时间)%24即可。 int findDelayedArrivalTim…

奇技淫巧第8期

学无止境。 下面是对去年11月至今年5月的零散知识点总结。 春节期间好好放松了一两个月&#xff0c;来校后又懒散的度过了一两个月&#xff0c;直到论文评审意见下来&#xff0c;才开启冲刺模式狂干了一两个月。总的来说&#xff0c;这半年来摸的时间比较多。好&#xff0c;不废…

想学好Python的话,这6本书带你从入门到精通

推荐几本在豆瓣评分很不错的Python学习书籍&#xff0c;这些书的电子版被我搜集整理了出来&#xff0c;今天分享给大家。 书籍包括《Python编程&#xff1a;从入门到实践》、《Python编程快速上手》、《流畅的Python》、《像计算机科学家一样思考Python》、《利用Python进行数…

树状数组C++详解

树状数组介绍 在学习一个算法之前一定要清楚它能干嘛&#xff0c;能解决什么样的问题&#xff0c;对你解题是否有帮助&#xff0c;然后才去学习它! 那么接下来看如下几个问题 什么是树状数组 顾名思义就是一个结构为树形结构的数组&#xff0c;于二叉树的结构类似但又不同&…