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


    前言

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

    开发环境:

    • 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
    • 2
    • 3
    • 4
    • 5
    • 6

    “”"

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

      • 表示请求成功

        requests <手机>

        url <电话号码>

        requests.get(url) <拨号>

        <电话打通了>

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

    “”"

    多页采集

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

    请求链接 PPT列表页面

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

    加入伪装

        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
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    “”"

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

      response.text 获取响应文本数据

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

      正则表达式

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

    “”"

        # 转码
        response.encoding = 'gb2312'
        # 提取数据 < aid参数 / ppt标题 >
        info = re.findall('

    (.*?)

    '
    , response.text) # for循环遍历, 把列表里面元素一个一个提取出来 for aid, title in info:
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    “”"

    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
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    “”"

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

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

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

      解决: 加headers请求头

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

    “”"

            # 提取下载链接
            download = re.findall('
  • , 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)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    尾语 💝

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

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

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

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

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

  • 相关阅读:
    pdf structuredClone is not defined 解决
    APP广告变现策略:如何实现盈利与用户体验的平衡?
    土壤养分检测:缺少氮磷钾元素时,作物表现的症状各不相同
    【Hyperledger Fabric 学习】运行一个Fabric应用
    试编写算法(用C语言)打印值为x的结点的所有祖先,假设值为x的结点不多于一个。(递归实现和非递归实现)
    SpringSecurity(二十一)--OAuth2:实现资源服务器(中)实现带有JdbcTokenStore的黑板模式
    数据治理之数据质量
    QoS(服务质量)学习记录
    仿热血江湖游戏类43
    Python入门自学进阶-Web框架——42、Web框架了解-bottle、flask
  • 原文地址:https://blog.csdn.net/weixin_62853513/article/details/130658195