Python采集ppt素材模板 (多线程版本),答辩、演讲再也不怕没有好用的PPT模板了(含完整源代码)
本次目的:
Python采集ppt素材模板 (多线程版本)
开发环境:
- Python 3.8
- Pycharm
模块使用:
- requests >>> pip install requests
- re
模块安装问题:
如果安装python第三方模块:
- win + R 输入 cmd 点击确定, 输入安装命令 pip install 模块名 (pip install requests) 回车
- 在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解释器?
- 选择file(文件) >>> setting(设置) >>> Project(项目) >>> python interpreter(python解释器)
- 点击齿轮, 选择add
- 添加python安装路径
pycharm如何安装插件?
- 选择file(文件) >>> setting(设置) >>> Plugins(插件)
- 点击 Marketplace 输入想要安装的插件名字 比如:翻译插件 输入 translation / 汉化插件 输入 Chinese
- 选择相应的插件点击 install(安装) 即可
- 安装成功之后 是会弹出 重启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 >>> 去列表页面查找…
二. 代码实现步骤:
爬虫四个基本步骤 发送请求 >>> 获取数据 >>> 解析数据 >>> 保存数据
- 发送请求, 对于 ppt 列表页面发送请求
- 获取数据, 获取服务器返回response响应数据
- 解析数据, 提取我们想要内容: ID 标题
- 发送请求, 把ID 传入 https://www.ypppt.com/p/d.php?aid=12774 发送请求
- 获取数据, 获取服务器返回response响应数据
- 解析数据, 提取下载地址
- 保存数据
导入模块
# 导入格式化输出模块
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模板了(含完整源代码)相关推荐
- 用Python爬取最新股票数据含完整源代码
用Python爬取最新股票数据含完整源代码 抓取目标: url:http://webapi.cninfo.com.cn/#/marketDataDate 数据目标: 获取 证券代码 证券简称 交易日期 ...
- 使用python采集某二手房源数据并做数据可视化展示(含完整源代码)
本次目的: python采集链家二手房源数据并做数据可视化展示 亮点: 系统分析网页性质 结构化的数据解析 csv数据保存 环境介绍: python 3.8 解释器 pycharm 专业版2021.2 ...
- Python自行车租车系统设计与实现报告,基于Django+MySQL,含完整源代码
一.项目介绍 1.项目名称 自行车租赁系统 2.项目简介 自行车租赁系统是为客户服务的自行车租赁管理系统, 可用于用户注册登录借车还车使用,根据用户借车租车时间自行计算花费 3.项目环境 该系统用Py ...
- Python批量采集亚马逊商品数据 (含完整源代码)
前言 嗨喽 ! 大家好吖,这里是魔王~ 亚马逊公司,是美国最大的一家网络电子商务公司,位于华盛顿州的西雅图 是网络上最早开始经营电子商务的公司之一,亚马逊成立于1994年 今天教大家用Python批量 ...
- Python完美采集淘宝数据,含完整源代码和视频教程
目录 前言 准备 分析(x0) 分析(x1) 分析(x2) 分析(x3) 分析(x4) 总结 我有话说 前言 大家好,我叫善念.不说漂亮话,直接开始今天要采集的目标:某宝数据 今天要采用的方式是se ...
- python采集天气数据 并做数据可视化 (含完整源代码)
前言 最近天气好像有了点小脾气,总是在万分晴朗得时候耍点小性子~ 阴会天,下上一会的雨~提醒我们时刻记得带伞哦,不然会被雨淋或者被太阳公公晒到
- ppt素材计算机基础知识,计算机基础知识幻灯片课计算机基础知识ppt件.ppt
1;1.1计算机硬件系统的构成及工作原理;计算机硬件系统的构成;主机是计算机硬件系统的主要组成部分,主要包括中央处理器(CPU)和内存储器.中央处理器主要由运算单元(运算器)和控制逻辑单元(控制器)两 ...
- python带你获取视频及弹幕数据~知识点满满(含完整源代码)
前言 嗨喽!大家好呀,这里是魔王~** 模块安装问题: 如果安装python第三方模块: win + R 输入 cmd 点击确定, 输入安装命令 pip install 模块名 (pip instal ...
- 用Python制作音乐播放器(下,含完整源代码)
哈喽,大家不知道是上午好还是中午好还是下午好还是晚上好! 音乐播放器,大家应该不陌生吧!今天我们一起来学习如何用python制作音乐播放器.之所开头有一个"下",是因为我们以前已经 ...
最新文章
- 关于Adodb.Stream的使用说明
- 关于中台,你可能不知道的那些事
- MatLab画图总结
- go定时读取mysql_golang+数据库定时任务
- html鼠标点击伪类,CSS伪类:CSS3鼠标滑过按钮动画
- 算法- 分治算法(实现汉诺塔)
- make找不到linux内核函数,linux内核make menuconfig出错
- C#将一个excel工作表根据指定范围拆分为多个excel文件
- Delphi 生日提醒的方法《LceMeaning》
- 【洛谷新手村】简单字符串 p1055 ISBN号码
- 一个自动动态播放图片的类(downmoon)新增图片效果
- C#毕业设计——基于C#+asp.net+sqlserver的网上书店系统设计与实现(毕业论文+程序源码)——网上书店系统
- 进销存设计之——进销存和财务软件的对接
- 全网粉丝200万,他是如何打造个人IP账号的?
- 微信小程序 一键授权 给第三方平台代开发管理(一,创建第三方平台)
- android模拟器+文件传输,夜神安卓模拟器怎么和电脑互传文件_夜神模拟器和电脑互传文件的教程-系统城...
- PyTorch实现AlexNet模型及参数详解
- Laravel学习记录--访问器与修改器
- ES 创建索引设置(setting)基础
- 平安科技2017笔试题目
热门文章
- 南开计算机学院网络安全,程明明 - 南开大学 - 网络空间安全学院
- Incorrect table definition; there can be only one auto column and it must be defined as a key
- 非支配排序遗传算法c语言,非支配排序遗传算法(NSGA)的研究与应用
- fastadmin采集插件-免费fastadmin采集
- microsoft word 自动生成目录
- Required request body is missing错误
- 查看,设置,设备的 竖屏-横屏模式 screen.orientation
- android源生进度条,如何使用源生css3实现圆环加载进度条
- 基于MATLAB改进Otsu阈值分割的车道线检测
- Java学习笔记Day06 工具类及常用算法