热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

【第2篇】Python爬虫实战PPT模板素材下载

【第2篇】Python爬虫实战-PPT模板素材下载-目标网址: https:www.ypppt.com目录1、页面结构分析第①步:解析模板列表第②步:进入到模板详情页,

目标网址: https://www.ypppt.com/

目录

1、页面结构分析

第①步:解析模板列表

第②步:进入到模板详情页,点击下载

第③步:进入模板下载页,点击下载

2、网站反爬措施

3、编码程序代码

4、程序测试结果


1、页面结构分析

 通过页面,我们可以确定我们采集的步骤。

第①步:解析模板列表

第②步:进入到模板详情页,点击下载

第③步:进入模板下载页,点击下载

2、网站反爬措施

经过测试,遇到该网站主要的反爬措施有以下几种情况。

①字符编码反爬,网站使用的字符编码是ISO-8859-1,对响应进行转码即可避免

②COOKIE反爬,COOKIE会不定时失效,有时候可用性很短,有时候可用性又很长。失效的时候更新一下COOKIE即可,如果失效,响应状态码为503

3、编码程序代码

#!/usr/bin/python
# -*- coding: UTF-8 -*-
"""
@author: Roc-xb
"""

import os
import requests
from lxml import etree

headers = {
    'authority': 'www.ypppt.com',
    'pragma': 'no-cache',
    'cache-control': 'no-cache',
    'sec-ch-ua': '"Chromium";v="92", " Not A;Brand";v="99", "Google Chrome";v="92"',
    'sec-ch-ua-mobile': '?0',
    'upgrade-insecure-requests': '1',
    'dnt': '1',
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36',
    'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',
    'sec-fetch-site': 'same-origin',
    'sec-fetch-mode': 'navigate',
    'sec-fetch-user': '?1',
    'sec-fetch-dest': 'document',
    'referer': 'https://www.ypppt.com/moban/jiaoyu/list-2.html',
    'accept-language': 'zh-CN,zh;q=0.9',
    'COOKIE': '__yjs_duid=1_6a0e3e92bfb2bf6fc44bcebab809fa271631401047877; yjs_js_security_passport=fbdf2cbff3fdc4ffbed9f5e215f2cfe87c0b9f33_1631401050_js',
}


# 获取模板列表
def get_moban_list(page_url, page=1):
    print(f"正在下载第{page}页".center(100, "*"))
    requests_url = page_url
    if page > 1:
        requests_url = page_url + f"list-{page}.html"
    res = requests.get(requests_url, headers=headers)
    res.encoding = res.apparent_encoding
    dom = etree.HTML(res.text)
    ul = dom.xpath("/html/body/div[2]/ul/li")
    for li in ul:
        url = "https://www.ypppt.com" + li.xpath('./a//@href')[0]
        get_moban_download_page(url)
    # 判断是否有下一页
    next_page = dom.xpath('//div[@class="page-navi"]//text()')
    if "下一页" in next_page:
        get_moban_list(page_url, page + 1)


# 进入模板详情页
def get_moban_download_page(url):
    res = requests.get(url, headers=headers)
    res.encoding = res.apparent_encoding
    dom = etree.HTML(res.text)
    try:
        download_url = dom.xpath('/html/body/div[2]/div[1]/div/div[1]/div[2]/a//@href')[0]
    except Exception:
        download_url = dom.xpath('/html/body/div[2]/div[2]/div/div[1]/div[2]/a//@href')[0]
    url = "https://www.ypppt.com" + download_url
    print("模板下载页面:", url)
    get_moban_download_url(url)


# 进入模板下载页
def get_moban_download_url(url):
    res = requests.get(url, headers=headers)
    res.encoding = res.apparent_encoding
    dom = etree.HTML(res.text)
    download_url = dom.xpath('/html/body/div[1]/div/ul/li[1]/a//@href')[0]
    print("模板下载地址:", download_url)
    downlaod_file(download_url)


# 下载文件
def downlaod_file(url):
    r = requests.get(url, headers=headers)
    file_dir = os.getcwd() + '\\个人简历\\'
    if not os.path.exists(file_dir):
        os.makedirs(file_dir)
        print("目录创建成功")
    file_name = file_dir + str(url).split("/")[-1]
    with open(file_name, 'wb') as f:
        f.write(r.content)
    print("文件下载成功:", file_name)
    print("".center(100, "*"))


if __name__ == '__main__':
    get_moban_list('https://www.ypppt.com/moban/jianli/')

4、程序测试结果


推荐阅读
  • 欢乐的票圈重构之旅——RecyclerView的头尾布局增加
    项目重构的Git地址:https:github.comrazerdpFriendCircletreemain-dev项目同步更新的文集:http:www.jianshu.comno ... [详细]
  • Python瓦片图下载、合并、绘图、标记的代码示例
    本文提供了Python瓦片图下载、合并、绘图、标记的代码示例,包括下载代码、多线程下载、图像处理等功能。通过参考geoserver,使用PIL、cv2、numpy、gdal、osr等库实现了瓦片图的下载、合并、绘图和标记功能。代码示例详细介绍了各个功能的实现方法,供读者参考使用。 ... [详细]
  • 本文介绍了响应式页面的概念和实现方式,包括针对不同终端制作特定页面和制作一个页面适应不同终端的显示。分析了两种实现方式的优缺点,提出了选择方案的建议。同时,对于响应式页面的需求和背景进行了讨论,解释了为什么需要响应式页面。 ... [详细]
  • 2016 linux发行版排行_灵越7590 安装 linux (manjarognome)
    RT之前做了一次灵越7590黑苹果炒作业的文章,希望能够分享给更多不想折腾的人。kawauso:教你如何给灵越7590黑苹果抄作业​zhuanlan.z ... [详细]
  • .NetCoreWebApi生成Swagger接口文档的使用方法
    本文介绍了使用.NetCoreWebApi生成Swagger接口文档的方法,并详细说明了Swagger的定义和功能。通过使用Swagger,可以实现接口和服务的可视化,方便测试人员进行接口测试。同时,还提供了Github链接和具体的步骤,包括创建WebApi工程、引入swagger的包、配置XML文档文件和跨域处理。通过本文,读者可以了解到如何使用Swagger生成接口文档,并加深对Swagger的理解。 ... [详细]
  • 本文整理了Java中java.lang.NoSuchMethodError.getMessage()方法的一些代码示例,展示了NoSuchMethodErr ... [详细]
  • Ubuntu安装常用软件详细步骤
    目录1.GoogleChrome浏览器2.搜狗拼音输入法3.Pycharm4.Clion5.其他软件1.GoogleChrome浏览器通过直接下载安装GoogleChro ... [详细]
  • 深入理解CSS中的margin属性及其应用场景
    本文主要介绍了CSS中的margin属性及其应用场景,包括垂直外边距合并、padding的使用时机、行内替换元素与费替换元素的区别、margin的基线、盒子的物理大小、显示大小、逻辑大小等知识点。通过深入理解这些概念,读者可以更好地掌握margin的用法和原理。同时,文中提供了一些相关的文档和规范供读者参考。 ... [详细]
  • 本文介绍了Windows操作系统的版本及其特点,包括Windows 7系统的6个版本:Starter、Home Basic、Home Premium、Professional、Enterprise、Ultimate。Windows操作系统是微软公司研发的一套操作系统,具有人机操作性优异、支持的应用软件较多、对硬件支持良好等优点。Windows 7 Starter是功能最少的版本,缺乏Aero特效功能,没有64位支持,最初设计不能同时运行三个以上应用程序。 ... [详细]
  • Google在I/O开发者大会详细介绍Android N系统的更新和安全性提升
    Google在2016年的I/O开发者大会上详细介绍了Android N系统的更新和安全性提升。Android N系统在安全方面支持无缝升级更新和修补漏洞,引入了基于文件的数据加密系统和移动版本的Chrome浏览器可以识别恶意网站等新的安全机制。在性能方面,Android N内置了先进的图形处理系统Vulkan,加入了JIT编译器以提高安装效率和减少应用程序的占用空间。此外,Android N还具有自动关闭长时间未使用的后台应用程序来释放系统资源的机制。 ... [详细]
  • Go语言实现堆排序的详细教程
    本文主要介绍了Go语言实现堆排序的详细教程,包括大根堆的定义和完全二叉树的概念。通过图解和算法描述,详细介绍了堆排序的实现过程。堆排序是一种效率很高的排序算法,时间复杂度为O(nlgn)。阅读本文大约需要15分钟。 ... [详细]
  • 本文介绍了使用哈夫曼树实现文件压缩和解压的方法。首先对数据结构课程设计中的代码进行了分析,包括使用时间调用、常量定义和统计文件中各个字符时相关的结构体。然后讨论了哈夫曼树的实现原理和算法。最后介绍了文件压缩和解压的具体步骤,包括字符统计、构建哈夫曼树、生成编码表、编码和解码过程。通过实例演示了文件压缩和解压的效果。本文的内容对于理解哈夫曼树的实现原理和应用具有一定的参考价值。 ... [详细]
  • 使用chrome编辑器实现网页截图功能的方法
    本文介绍了在chrome浏览器中使用编辑器实现网页截图功能的方法。通过在地址栏中输入特定命令,打开控制台并调用命令面板,用户可以方便地进行网页截图操作。 ... [详细]
  • 在IDEA中运行CAS服务器的配置方法
    本文介绍了在IDEA中运行CAS服务器的配置方法,包括下载CAS模板Overlay Template、解压并添加项目、配置tomcat、运行CAS服务器等步骤。通过本文的指导,读者可以轻松在IDEA中进行CAS服务器的运行和配置。 ... [详细]
  • 如何压缩网站页面以减少页面加载时间
    本文介绍了影响网站打开时间的两个因素,即网页加载速度和网站页面大小。重点讲解了如何通过压缩网站页面来减少页面加载时间。具体包括图片压缩、Javascript压缩、CSS压缩和HTML压缩等方法,并推荐了相应的压缩工具。此外,还提到了一款Google Chrome插件——网页加载速度分析工具Speed Tracer。 ... [详细]
author-avatar
米斯特RAO
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有