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

news/2025/1/15 13:55:25/

前言

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

开发环境:

  • 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)# 伪装模拟浏览器 headersheaders = {'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).contentwith open('ppt\\' + title + '.zip', 'wb') as f:# 写入内容f.write(content)print(title, download)

尾语 💝

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

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

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

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

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


http://www.ppmy.cn/news/94240.html

相关文章

【沐风老师】3DMAX宇宙生成器(一键生成星系)插件使用方法详解

3DMAX宇宙生成器&#xff08;一键生成星系&#xff09;插件 3DMAX宇宙生成器&#xff08;一键生成星系&#xff09;插件&#xff0c;用于模拟星团及星系的运动。可以创建单个集合进行动画计算&#xff0c;也可以输入不同坐标&#xff0c;建立多个集合后统一进行动画计算。 【安…

机试打卡 -12 滑动窗口最大值(优先队列堆)

我的思路1&#xff1a;队列&#xff0c;每次 出队入队&#xff0c;记录1个队列中的最大值索引&#xff0c;超时。。。 class Solution:def maxSlidingWindow(self, nums: List[int], k: int) -> List[int]:nums_lenlen(nums)ans_list[]# 队列长度为kqueuenums[:k]# 队列最大…

Learning C++ No.24 【哈希/散列实战】

引言&#xff1a; 北京时间&#xff1a;2023/5/20/7:30&#xff0c;周六&#xff0c;可惜有课&#xff0c;而且还是早八&#xff0c;说明我们现在没有多少的学习时间啦&#xff01;得抓紧把该博客的引言给写完&#xff0c;我们距离期末考越来越近啦&#xff01;再过一个星期就…

「SQL面试题库」 No_76 每月交易 I

&#x1f345; 1、专栏介绍 「SQL面试题库」是由 不是西红柿 发起&#xff0c;全员免费参与的SQL学习活动。我每天发布1道SQL面试真题&#xff0c;从简单到困难&#xff0c;涵盖所有SQL知识点&#xff0c;我敢保证只要做完这100道题&#xff0c;不仅能轻松搞定面试&#xff0…

建议熟知:2023谷歌新搜索规则!

谷歌作为全球最大的搜索引擎之一&#xff0c;不断更新和调整其搜索算法和规则&#xff0c;以提供更精准、高质量的搜索结果。2023年&#xff0c;谷歌搜索将迎来一系列新的搜索规则&#xff0c;同时&#xff0c;AI工具的快速发展也为谷歌搜索带来了全新的应用场景和可能性。 这…

JavaScript 验证 API

JavaScript提供了多种验证API&#xff0c;用于验证用户输入的数据或者执行其他类型的验证操作。以下是一些常用的JavaScript验证API&#xff1a; 1. **正则表达式&#xff08;Regular Expressions&#xff09;**&#xff1a;正则表达式是一种强大的验证工具&#xff0c;用于匹…

English Learning - L3 作业打卡 Lesson3 Day21 2023.5.25 周四

English Learning - L3 作业打卡 Lesson3 Day21 2023.5.25 周四 引言&#x1f349;句1: Here is another expression about meat one man’s meat is another man’s poison.成分划分连读爆破语调 &#x1f349;句2: In other words, one person might like something very muc…

CentOS7.6(Linux)环境下有网和无网安装Docker

1、 服务器有网环境 1.1、手动卸载旧版本 sudo yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine1.2、安装yum-utils sudo yum install -y yum-utils \device-mapper-per…