本次目的:

Python采集ppt素材模板 (多线程版本)

开发环境:

  • Python 3.8
  • Pycharm

模块使用:

  • requests >>> pip install requests
  • re

模块安装问题:

如果安装python第三方模块:

  1. win + R 输入 cmd 点击确定, 输入安装命令 pip install 模块名 (pip install requests) 回车
  2. 在pycharm中点击Terminal(终端) 输入安装命令

安装失败原因:

  • 失败一: pip 不是内部命令
    解决方法: 设置环境变量

  • 失败二: 出现大量报红 (read time out)
    解决方法: 因为是网络链接超时, 需要切换镜像源
    清华:https://pypi.tuna.tsinghua.edu.cn/simple
    阿里云:https://mirrors.aliyun.com/pypi/simple/
    中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/
    华中理工大学:https://pypi.hustunique.com/
    山东理工大学:https://pypi.sdutlinux.org/
    豆瓣:https://pypi.douban.com/simple/
    例如:pip3 install -i https://pypi.doubanio.com/simple/ 模块名

  • 失败三: cmd里面显示已经安装过了, 或者安装成功了, 但是在pycharm里面还是无法导入
    解决方法: 可能安装了多个python版本 (anaconda 或者 python 安装一个即可) 卸载一个就好
    或者你pycharm里面python解释器没有设置好


如何配置pycharm里面的python解释器?

  1. 选择file(文件) >>> setting(设置) >>> Project(项目) >>> python interpreter(python解释器)
  2. 点击齿轮, 选择add
  3. 添加python安装路径

pycharm如何安装插件?

  1. 选择file(文件) >>> setting(设置) >>> Plugins(插件)
  2. 点击 Marketplace 输入想要安装的插件名字 比如:翻译插件 输入 translation / 汉化插件 输入 Chinese
  3. 选择相应的插件点击 install(安装) 即可
  4. 安装成功之后 是会弹出 重启pycharm的选项 点击确定, 重启即可生效

一. 数据来源分析

分析:

我们想要的数据内容, 可以从哪里得到…
ppt模板 >>> 可以怎么去下载, 下载url在哪里获取 ppt标题可以从哪里

分析怎么去:

通过开发者工具进行抓包分析…

I. 找到ppt文件下载地址 url https://down.ypppt.com/uploads/soft/220216/1-220216193454.zip
II. 通过下载地址, 可以找到下载地址的来源 https://www.ypppt.com/p/d.php?aid=12774
III. 通过分析可以知道 想要所有PPT数据 获取所有ppt ID
IV. https://www.ypppt.com/moban/ 这个列表页面 就有我们想要的ppt 的ID参数

如果说你采集的数据, url地址变化是因为 ID >>> 去列表页面查找…

二. 代码实现步骤:

爬虫四个基本步骤 发送请求 >>> 获取数据 >>> 解析数据 >>> 保存数据

  1. 发送请求, 对于 ppt 列表页面发送请求
  2. 获取数据, 获取服务器返回response响应数据
  3. 解析数据, 提取我们想要内容: ID 标题
  4. 发送请求, 把ID 传入 https://www.ypppt.com/p/d.php?aid=12774 发送请求
  5. 获取数据, 获取服务器返回response响应数据
  6. 解析数据, 提取下载地址
  7. 保存数据

导入模块

# 导入格式化输出模块
import pprint
# 导入数据请求模块
import requests  # 导入模块没有使用, 会是一个灰色待机状态...  pip install requests
# 导入正则表达式模块
import re  # 内置模块 不需要安装
# 导入多线程模块
import concurrent.futures
# for page in range(2, 152):  # 2,3,4,5,6,7,8,9,10
#     # 1. 发送请求, 对于 ppt 列表页面发送请求 开源的游戏辅助代码 连连看...模拟点击 识别图片模拟点击
#     print(f'===================正在爬取第{page}页的数据内容====================')
#     url = f'https://www.ypppt.com/moban/list-{page}.html/' # 确定url
#     """
#     python爬虫: 用Python代码 模拟浏览器对于服务器发送请求
#     user-agent: 浏览器身份标识(UA)
#     token
#     """
#     headers = {#         'cookie': '__yjs_duid=1_7126cde6bdcbda7ed98e50e262bb25f61645075852061; __gads=ID=4ceb58ec03cc08b5-22301745a9d000e4:T=1645075852:RT=1645075852:S=ALNI_MZO0GflNGEwhTH22iGuErL_KgyU8g; Hm_lvt_45db753385e6d769706e10062e3d6453=1645075852,1645098583; yjs_js_security_passport=d81a42d01a2b0264b06bf63cc16c042c8bca05b5_1645106174_js; Hm_lpvt_45db753385e6d769706e10062e3d6453=1645106191',
#         'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36'
#     }
#     dit = get_proxy()
#     response = requests.get(url=url, headers=headers, proxies=dit)
#     # response.encoding = response.apparent_encoding   # 自动识别编码
#     response.encoding = 'utf-8'
#     """
#     <Response [503]>  对象类型 响应对象
#     状态码:
#         200: 请求成功
#         503: 服务器问题
#         300 重定向 跳转意思
#     """
#     # 2. 获取数据, 获取服务器返回response响应数据
#     # print(response.text)  # html字符串数据
#     # 3. 解析数据, 提取我们想要内容: ID 标题
#     """
#     正则表达式 是可以直接对于字符串数据 进行解析提取....
#         解析数据: 返回空列表 >>> 表示我们没有提取到内容
#             1. 服务器没有给我们返回数据
#             2. 解析方法(解析语法) 写错了
#     .*? 正则表达式元字符 匹配规则  表示可以匹配任意字符(除了\n以外)  re.S \n也可以匹配
#     response.text 获取响应体文本数据
#     response.json() 获取响应体json字典数据
#     response.content 获取响应体二进制数据
#     """
#     ppt_info = re.findall('<a href="(.*?)" class="p-title" target="_blank">(.*?)</a>', response.text)
#     # [('/article/2022/12774.html', '质感纹理工作总结汇报PPT模板')]'
#     for link, title in ppt_info:
#         """
#          # split()字符串分割  >>> /article/2022/12774.html
#         列表索引位置, 从左往右数 从0开始计数的 0 1 2 3 4
#             从右往左数 从-1 -2 -3 -4 计数的
#         format 字符串格式化的方法  {} 占位符
#         """
#         ppt_id = link.split('/')[-1].split('.')[0]
#         #  4. 发送请求, 把ID 传入 https://www.ypppt.com/p/d.php?aid=12774 发送请求
#         link_url = f'https://www.ypppt.com/p/d.php?aid={ppt_id}'
#         # link_url = 'https://www.ypppt.com/p/d.php?aid={}'.format(ppt_id)
#         # link_url = 'https://www.ypppt.com/p/d.php?aid=' + ppt_id
#         response_1 = requests.get(url=link_url, headers=headers, proxies=dit)
#         # 5. 获取数据, 获取服务器返回response响应数据
#         # 6. 提取下载地址 正则提取出来数据返回列表
#         download_url = re.findall('<li><a href="(.*?)">下载地址1</a></li>', response_1.text)[0]
#         # 7. 保存数据 保存压缩包 图片/音频/视频/特定格式的文件 都是以二进制数据进行保存
#         ppt_content = requests.get(url=download_url, headers=headers, proxies=dit).content  # 获取二进制数据内容
#         # w 写入 b 二进制模式 wb 以二进制模式写入数据
#         with open('素材\\' + title + '.zip', mode='wb') as f:
#             f.write(ppt_content)
#         print(download_url, title)
def get_proxy():url = 'http://tiqu.pyhttp.taolop.com/getip?count=1&neek=15790&type=2&yys=0&port=1&sb=&mr=2&sep=0&time=4'json_data = requests.get(url).json()ip_data = 'http://' + str(json_data['data'][0]["ip"]) + ':' + str(json_data['data'][0]["port"])dit = {'http': ip_data,'https': ip_data}return ditdef get_response(html_url):"""发送请求"""headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36'}dit = get_proxy()response = requests.get(url=html_url, headers=headers, proxies=dit)response.encoding = 'utf-8'return responsedef get_ppt_info(html_url):"""获取ppt id 以及 标题"""response = get_response(html_url)data_list = re.findall('<a href="(.*?)" class="p-title" target="_blank">(.*?)</a>', response.text)return data_listdef save(link, title):"""保存数据"""response_1 = get_response(link)download_url = re.findall('<li><a href="(.*?)">下载地址1</a></li>', response_1.text)[0]ppt_content = get_response(download_url).contentwith open('素材\\' + title + '.zip', mode='wb') as f:f.write(ppt_content)print('保存成功: ', title)def main(html_url):"""主函数, 把所有的功能函数整合到一起"""data_list = get_ppt_info(html_url)for link, title in data_list:ppt_id = link.split('/')[-1][:-5]ppt_url = f'https://www.ypppt.com/p/d.php?aid={ppt_id}'save(ppt_url, title)if __name__ == '__main__':exe = concurrent.futures.ThreadPoolExecutor(max_workers=5)for page in range(2, 11):  # 2,3,4,5,6,7,8,9,10url = f'https://www.ypppt.com/moban/list-{page}.html/' # 确定urlexe.submit(main, url)exe.shutdown()

Python采集ppt素材模板 (多线程版本),答辩、演讲再也不怕没有好用的PPT模板了(含完整源代码)相关推荐

  1. 用Python爬取最新股票数据含完整源代码

    用Python爬取最新股票数据含完整源代码 抓取目标: url:http://webapi.cninfo.com.cn/#/marketDataDate 数据目标: 获取 证券代码 证券简称 交易日期 ...

  2. 使用python采集某二手房源数据并做数据可视化展示(含完整源代码)

    本次目的: python采集链家二手房源数据并做数据可视化展示 亮点: 系统分析网页性质 结构化的数据解析 csv数据保存 环境介绍: python 3.8 解释器 pycharm 专业版2021.2 ...

  3. Python自行车租车系统设计与实现报告,基于Django+MySQL,含完整源代码

    一.项目介绍 1.项目名称 自行车租赁系统 2.项目简介 自行车租赁系统是为客户服务的自行车租赁管理系统, 可用于用户注册登录借车还车使用,根据用户借车租车时间自行计算花费 3.项目环境 该系统用Py ...

  4. Python批量采集亚马逊商品数据 (含完整源代码)

    前言 嗨喽 ! 大家好吖,这里是魔王~ 亚马逊公司,是美国最大的一家网络电子商务公司,位于华盛顿州的西雅图 是网络上最早开始经营电子商务的公司之一,亚马逊成立于1994年 今天教大家用Python批量 ...

  5. Python完美采集淘宝数据,含完整源代码和视频教程

     目录 前言 准备 分析(x0) 分析(x1) 分析(x2) 分析(x3) 分析(x4) 总结 我有话说 前言 大家好,我叫善念.不说漂亮话,直接开始今天要采集的目标:某宝数据 今天要采用的方式是se ...

  6. python采集天气数据 并做数据可视化 (含完整源代码)

    前言 最近天气好像有了点小脾气,总是在万分晴朗得时候耍点小性子~ 阴会天,下上一会的雨~提醒我们时刻记得带伞哦,不然会被雨淋或者被太阳公公晒到

  7. ppt素材计算机基础知识,计算机基础知识幻灯片课计算机基础知识ppt件.ppt

    1;1.1计算机硬件系统的构成及工作原理;计算机硬件系统的构成;主机是计算机硬件系统的主要组成部分,主要包括中央处理器(CPU)和内存储器.中央处理器主要由运算单元(运算器)和控制逻辑单元(控制器)两 ...

  8. python带你获取视频及弹幕数据~知识点满满(含完整源代码)

    前言 嗨喽!大家好呀,这里是魔王~** 模块安装问题: 如果安装python第三方模块: win + R 输入 cmd 点击确定, 输入安装命令 pip install 模块名 (pip instal ...

  9. 用Python制作音乐播放器(下,含完整源代码)

    哈喽,大家不知道是上午好还是中午好还是下午好还是晚上好! 音乐播放器,大家应该不陌生吧!今天我们一起来学习如何用python制作音乐播放器.之所开头有一个"下",是因为我们以前已经 ...

最新文章

  1. 关于Adodb.Stream的使用说明
  2. 关于中台,你可能不知道的那些事
  3. MatLab画图总结
  4. go定时读取mysql_golang+数据库定时任务
  5. html鼠标点击伪类,CSS伪类:CSS3鼠标滑过按钮动画
  6. 算法- 分治算法(实现汉诺塔)
  7. make找不到linux内核函数,linux内核make menuconfig出错
  8. C#将一个excel工作表根据指定范围拆分为多个excel文件
  9. Delphi 生日提醒的方法《LceMeaning》
  10. 【洛谷新手村】简单字符串 p1055 ISBN号码
  11. 一个自动动态播放图片的类(downmoon)新增图片效果
  12. C#毕业设计——基于C#+asp.net+sqlserver的网上书店系统设计与实现(毕业论文+程序源码)——网上书店系统
  13. 进销存设计之——进销存和财务软件的对接
  14. 全网粉丝200万,他是如何打造个人IP账号的?
  15. 微信小程序 一键授权 给第三方平台代开发管理(一,创建第三方平台)
  16. android模拟器+文件传输,夜神安卓模拟器怎么和电脑互传文件_夜神模拟器和电脑互传文件的教程-系统城...
  17. PyTorch实现AlexNet模型及参数详解
  18. Laravel学习记录--访问器与修改器
  19. ES 创建索引设置(setting)基础
  20. 平安科技2017笔试题目

热门文章

  1. 南开计算机学院网络安全,程明明 - 南开大学 - 网络空间安全学院
  2. Incorrect table definition; there can be only one auto column and it must be defined as a key
  3. 非支配排序遗传算法c语言,非支配排序遗传算法(NSGA)的研究与应用
  4. fastadmin采集插件-免费fastadmin采集
  5. microsoft word 自动生成目录
  6. Required request body is missing错误
  7. 查看,设置,设备的 竖屏-横屏模式 screen.orientation
  8. android源生进度条,如何使用源生css3实现圆环加载进度条
  9. 基于MATLAB改进Otsu阈值分割的车道线检测
  10. Java学习笔记Day06 工具类及常用算法