文章目录

  • 一、前言
  • 二、爬取思路
  • 三、数据爬取
    • 1、导入响应的库
    • 2、完整代码
    • 3、结果展示
  • 四、Blogger’s speech
  • 五、补充(乱码问题已解决)

一、前言

到了大学,经常会因为课外活动,学校活动,团课活动,等一系列活动做一些PPT。经常要找PPT模板来应急(不会还有人自己做PPT模板吧,哈哈哈 ),为了省事,于是,我想到了爬虫,把目标网页全部爬下来,供自己使用。

二、爬取思路

首先,选取目标网页:优品PPT

接下来,是数据获取的思路

1、解析初始界面数据

2、获取到每个每个PPT对应的li节点

3、获取对应PPT模板的链接和名字

4、进入每个PPT模板的详情界面

5、解析界面

6、获取PPT模板下载页面的链接

7、进入下载页面

8、解析界面获取下载链接

9、完成PPT模板的下载


图中的xpath分别为:

xpath_1 = '/html/body/div[2]/ul/li'
xpath_2 = '/html/body/div[2]/div[2]/div/div[1]/div[2]/a/@href'
xpath_3 = '/html/body/div[1]/div/ul/li[1]/a/@href'

获取xapth的方法,如图以获取xpath_2为例:

三、数据爬取

1、导入响应的库

import os
import chardet
import requests
from lxml import etree
from tqdm import tqdm

2、完整代码

# -*- coding: UTF-8 -*-
"""
@Author  :远方的星
@Time   : 2021/5/4 21:17
@CSDN    :https://blog.csdn.net/qq_44921056
@腾讯云   : https://cloud.tencent.com/developer/column/91164
"""
import os
import chardet
import requests
import logging
from lxml import etree
from tqdm import tqdm
from fake_useragent import UserAgent# 日志输出的基本配置
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s: %(message)s')# 随机产生请求头
ua = UserAgent(verify_ssl=False, path='fake_useragent.json')path = 'D:/PPT模板'
if not os.path.exists(path):os.mkdir(path)# 随机切换请求头
def random_ua():headers = {"accept-encoding": "gzip",    # gzip压缩编码  能提高传输文件速率"user-agent": ua.random}return headers# 得到xpath对应的结果
def get_link(url, xpath):response = requests.get(url=url, headers=random_ua())response.encoding = chardet.detect(response.content)['encoding']  # 自动转换编码格式,与网页一致response = response.texthtml = etree.HTML(response)link = html.xpath(xpath)return link# 获取下载链接并下载
def get_zip_url(url):xpath_1 = '/html/body/div[2]/ul/li'xpath_2 = '/html/body/div[2]/div[2]/div/div[1]/div[2]/a/@href'xpath_3 = '/html/body/div[1]/div/ul/li[1]/a/@href'a = get_link(url, xpath_1)  # 获取所有的li节点for i in tqdm(range(len(a))):  # 对li节点进行遍历webpage_url = 'https://www.ypppt.com' + a[i].xpath('./a[1]/@href')[0]  # 获取到第一个链接zip_name = a[i].xpath('./a[2]/text()')[0] + '.zip'  # 获取文本,组成待下载文件的文件名download_link = 'https://www.ypppt.com' + get_link(webpage_url, xpath_2)[0]  # 获取下载页面download_url = get_link(download_link, xpath_3)[0]  # 获取下载链接save_path = path + '/' + zip_name  # 图片的保存地址res = requests.get(url=download_url, headers=random_ua()).contentwith open(save_path, 'wb') as f:  # 写入文件,即下载f.write(res)def main():page = int(input('请输入你想要爬取的页数:'))# 网页第一页和之后的地址不是同一个规律,使用条件判断for num in range(1, page+1):if num == 1:url = 'https://www.ypppt.com/moban/'logging.info('正在下载第1页模板,请稍等片刻嗷')get_zip_url(url)else:url = 'https://www.ypppt.com/moban/list-{}.html'.format(num)logging.info('正在下载第{}页模板,请稍等片刻嗷'.format(num))get_zip_url(url)logging.info('你所要求的任务,全部都完成喽~')if __name__ == "__main__":main()

3、结果展示

四、Blogger’s speech

其实,我是想用python顺便把zip文件解压了,更方便一点,但是我用zipfile成功解压之后,解压文件名出现乱码情况,我在网上找了一些解决方案,没整明白,就不多做解压,以免“画蛇添足”。

如有不足,或者有乱码的解决方法,还请大佬评论区留言或私信我,我会进行补充。

感谢您的支持,希望可以点赞,关注,收藏,一键三连哟。

五、补充(乱码问题已解决)

解包乱码问题解决方案

作者:远方的星
CSDN:https://blog.csdn.net/qq_44921056
腾讯云:https://cloud.tencent.com/developer/column/91164
本文仅用于交流学习,未经作者允许,禁止转载,更勿做其他用途,违者必究。

python爬取海量PPT模板,再也不用辛苦地找模板了相关推荐

  1. 使用Python爬取各类ppt模板素材————

    基于Python好用的爬虫程序,亲测! python代码实现[完整] 若由于一些原因,通过程序无法获取ppt模板素材的,可以从以下链接中直接下载获取部分行业的ppt模板文件.如果未能找到符合所需要的p ...

  2. 10000+ppt免费下载领取(python爬取全站ppt)

    1.缘由 前几天参加一个活动,需要制作ppt,制作完之后ppt模板死活不能让人满意.然后就去网上找模板,有些比较适合ppt模板还是收费的,这-,有点恶心,哈哈哈!! 今天教大家如何使用python爬虫 ...

  3. python 爬取海量网易云评论并写入数据库

    本人是一个网易云音乐的重度患者,最近闲来无事,就想起来写一个爬虫爬一下网易云音乐上都有哪些有趣的评论,于此记录一下过程. 整体思路 可能是我的脑回路那啥,作为一个新手,咱一上来,是直接尝试爬取评论.随 ...

  4. 简单爬虫爬取头像,妈妈再也不用担心我头像不够用了

    目标网站 如题,实现头像的爬取,我们先找我们需要爬取的网站:图片_朋友圈背景图_好看的图片_我要个性网 (woyaogexing.com) 我们再简单了解一下,爬虫,在我学习到目前浅浅的理解是,让爬虫 ...

  5. python爬取海量精美高清漂酿纯真可爱善良小姐姐壁纸(老司机福利)

    爬取的目标网址: http://www.zdqx.com/qingchun/index.html 话不多说,直接上代码: import requests import re,osheaders = { ...

  6. python爬取58同城租房信息_python爬虫:找房助手V1.0-爬取58同城租房信息(示例代码)...

    #!/usr/bin/python # -*- encoding:utf-8 -*-importrequests frombs4 importBeautifulSoup frommultiproces ...

  7. python 24位图转 8位_Python爬取PPT模板小工具下载-Python爬取PPT模板小工具免费版下载v1.0...

    由于很多PPT抓取工具都会因为版本问题无法使用,所以论坛大神就自己写了这款Python爬取PPT模板小工具,可以帮助用户轻松获取各种PPT模板,使用的时候注意一次只能下载一种类型.软件仅供交流学习,下 ...

  8. python爬取ppt代码_Python爬取PPT模板小工具

    由于很多PPT抓取工具都会因为版本问题无法使用,所以论坛大神就自己写了这款Python爬取PPT模板小工具,可以帮助用户轻松获取各种PPT模板,使用的时候注意一次只能下载一种类型.软件仅供交流学习,下 ...

  9. Python爬取PPT模板(requests+BeautifulSoup+多线程)

    Python爬取PPT模板(requests+BeautifulSoup+多线程) 快到做毕业设计的时间了,得去找点好看的PPT模板了,在http://www.ypppt.com这个网站上发现了很多不 ...

  10. python爬取高匿代理IP(再也不用担心会进小黑屋了)

    一起进步 为什么要用代理IP 很多数据网站,对于反爬虫都做了一定的限制,这个如果写过一些爬虫程序的小伙伴应该都深有体会,其实主要还是IP进了小黑屋了,那么为了安全,就不能使用自己的实际IP去爬取人家网 ...

最新文章

  1. Perl的Hash一个小细节
  2. 100以内 蝗 靓耸 6的c语言怎,C语言学习C6.ppt
  3. 梯度提升树(GBDT)原理小结
  4. Private Data Manipulation in Optimal Sponsored Search Auction
  5. 1G、3G都失败了,5G也会失败吗?
  6. 双向tvs和单向tvs_TVS的完整形式是什么?
  7. docker 及 docker-compose 的快速安装和简单使用
  8. react实例9-拖拽2
  9. 华中科技大学计算机组成原理教材,2017华中科技大学《计算机组成原理》考研套装资料...
  10. 计算机网络设备维修会计分录,设备维修记录什么会计科目
  11. 各种音视频编解码学习——————详解 h264 ,mpeg4 ,aac 等所有音视频格式
  12. 客户端Connection reset by peer怎么办?——可能只是服务端挂了
  13. python列表功能默写_python 1 默写用递归实现无限极分类 2 默写用树实现无限极分类...
  14. 【EMGU CV】油管一个视频合集学习笔记
  15. 计算机二级考试公网入口和教育网入口,考试入口
  16. Springboot企业资源管理信息系统kvonv计算机毕业设计-课程设计-期末作业-毕设程序代做
  17. 安装包时遇到 requires a peer of @angular/core、unmet peer dependency...的问题
  18. 屏幕分辨率:聊一聊像素
  19. 数据分析实战 | 银行 “信贷” 客户的可视化分析
  20. Layui hint: is not a valid module

热门文章

  1. linux搭建摄像头,Linux环境下配置虚拟摄像头akvcam
  2. Pollard Rho算法
  3. 两个瓶子水怎样一样多_大班科学-两杯水一样多吗?
  4. python解决控制问题系例之一:解决微分方程-状态方程求解作图问题
  5. 在电脑上如何录制游戏
  6. 在win10中加载ISO文件到虚拟光驱
  7. 猴王问题(项目分析以及项目实现)
  8. KDJ指标短线交易技巧(图解)
  9. 删除之后在计算机操作中快捷键,计算机中删除的快捷键是什么
  10. 深度学习目前的局限性之AI识别彻底懵逼!这到底是「牛」还是「鲨」?