selenium动态下载某库PPT文档

  • 1、引言
  • 2、代码实战
    • 2.1 思路分析
    • 2.2 页面分析
    • 2.3 代码展示
    • 2.4 代码解析
  • 3、总结

1、引言

小鱼:你看啥嘞,把显示屏亮度调的这么暗???
小屌丝:这… 没有你想的那样,我这是再学习算法知识呢。
小鱼:你不学习算命了,改行学习算法了?
小屌丝:正儿八经的,能不能帮我把这个文档给down下来(露出猥琐的表情…)
小鱼:这个…理论上是不行的,因为我们要尊重对方嘛。
小屌丝:你要是把文档给弄到本地,我请你撸串。
小鱼:我这么注重养生的人,不撸串。
小屌丝:我再叫上几个妹子。
小鱼:额…几个??
小屌丝:四个
小鱼:网址…订桌…约妹…半小时后见!!

2、代码实战

2.1 思路分析

我们先来看一下小屌丝想下载的文档。

要想下载,就得是会员,否则,
像小屌丝这种人,怎么可能把钱充到这里面。

据说小屌丝的车是 凯迪拉克,大家脑补一下。

如果非会员下载文档,那就要想想办法了。
例如:嗯…大家都懂得。
所以接下来, 就跟着小鱼一起,看看怎么拿下这个文档。

我们按照以下几步来思考:

  • 爬取前的准备:用到的库
  • 页面的分析:页面展示与定位
  • 实现方式:渲染方式,爬取方式,保存到本地

整理好了思路,就开始弄。

2.2 页面分析

我们先打开开发者模式,看看展示的内容

我们可以看到,PPT是以图片形式显示,并且图片的url地址已经显示在页面中,并且存储在前端中的格式一样(我就截一个图,剩下的自己看),非常的nice。

2.3 代码展示

又到了激动人心的时刻,上代码。

# -*- coding: utf-8 -*-
"""
@ auth : carl_DJ
@ time : 2020-08-31
"""from selenium import webdriver
import requests
from lxml import etree
import timedef spid_view():#不开启浏览器运行脚本# options = webdriver.ChromeOptions()# options.add_argument('headless')# driver = webdriver.Chrome(options = options)#启动浏览器运行脚本driver = webdriver.Chrome()#设置url地址url_wenku = "https://wenku.baidu.com/view/xxxxx"driver.get(url=url_wenku)#设置header头,headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36'}#手动点击加载更多页面input("阻塞,手动点击加载更多的页面")selection = etree.HTML(driver.page_source)#手动模拟滑动for i in range (1,30):# javascript语句,会写WebUI自动化的,都了解这个用法js = "var q=document.documentElement.scrollTop={}".format(i * 535)driver.execute_script(js)#这里强制等待3秒time.sleep(3)#图片与url匹配empty_list = []#xpath方式定位all_ppt_div = selection.xpath("//div[@class='ppt-image-wrap']/img/@src")#做循环获取for j in all_ppt_div:empty_list.append(j)time.sleep(3)#如果页面多一层标签,那么就需要使用这个for循环# selection = etree.HTML(driver.page_source)#第4页到最后一页,都是隐藏页面,# for i in range(4,33):#     all_ppt_div = selection.xpath("//div[@class='ppt-page-item reader-pageNo-%s ppt-bd hidden-doc-banner']/div/img/@src"%str(i))#     try:#         empty_list.append(all_ppt_div[0])#     except Exception as e:#         print(e)#         break#文件存储count = 1empty_list = list(set(empty_list))for i in empty_list:r = requests.get(str(i))with open("%s.jpg" %str(count),'wb') as f :f.write(r.content)count += 1#关闭浏览器driver.quit()if __name__ == '__main__':spid_view()

2.4 代码解析

启动浏览器

#不开启浏览器运行脚本# options = webdriver.ChromeOptions()# options.add_argument('headless')# driver = webdriver.Chrome(options = options)#启动浏览器运行脚本driver = webdriver.Chrome()#设置url地址url_wenku = "https://wenku.baidu.com/view/xxxx"driver.get(url=url_wenku)

这里代码,

  • 不启动浏览器执行脚本(小鱼强烈推荐,节约资源)
    ->这里的不启动是指浏览器在后台运行
  • 启动浏览器就是跟我们打开浏览器一样

模拟滑动

    #手动模拟滑动for i in range (1,33):# javascript语句,会写WebUI自动化的,都了解这个用法js = "var q=document.documentElement.scrollTop={}".format(i * 535)driver.execute_script(js)#这里强制等待3秒time.sleep(3)

这段代码,

  • range()的 30是剩余30页没有展示的,也就是""后展示的剩余页数
  • 535 这没有特别的意思,就是535在range()函数使用 每次可以加载两个页面。

图片url匹配

#图片与url匹配empty_list = []#xpath方式定位all_ppt_div = selection.xpath("//div[@class='ppt-image-wrap']/img/@src")#做循环获取for j in all_ppt_div:empty_list.append(j)time.sleep(3)#如果页面多一层标签,那么就需要使用这个for循环# selection = etree.HTML(driver.page_source)#第4页到最后一页,都是隐藏页面,# for i in range(4,33):#     all_ppt_div = selection.xpath("//div[@class='ppt-page-item reader-pageNo-%s ppt-bd hidden-doc-banner']/div/img/@src"%str(i))#     try:#         empty_list.append(all_ppt_div[0])#     except Exception as e:#         print(e)#         break

这段代码,

  • 这里用到的是xpath方法匹配;
  • 定义一个空列表,把图片写入到列表中;
  • 第二个for循环,针对隐藏的页面,也就是多一层标签而设定的;

图片存储

    #文件存储count = 1empty_list = list(set(empty_list))for i in empty_list:r = requests.get(str(i))with open("%s.jpg" %str(count),'wb') as f :f.write(r.content)count += 1

这段代码,就是把文件存入到本地,
这里的content就是文件的二进制形式。

3、总结

看到这里,今天的分享又快结束了。
这个框架,适用于90%的场景,剩下的10%,就是要特定喽。
但是,小鱼也是提醒一下,虽然适用,但切勿商用,毕竟baidu也不容易。
我这要赶紧联系小屌丝,这会菜别凉了~

小鱼:小屌丝,文档我弄好了,你的饭桌定好没,菜上齐没,妹子到位没?
小屌丝:你先发给我看看。
小鱼:…

有的时候,一句话就能让友谊的小船倾斜…
也有的时候,一顿烧烤,能让沉底的轮船浮出水面…

在东北,没有什么事,是一顿烧烤解决不了的,
如果有,那就再加上两个妹子(起酒专用的)。

Python3,selenium动态下载某库PPT文档,省下的钱可以撸串了!!!相关推荐

  1. python 下载道客巴巴文档

    python 下载道客巴巴文档 环境准备 首先,我们会使用到selenium这个库,直接用pip安装即可,有关于selenium的使用还需要安装浏览器驱动和配置环境变量,在这里就不过多阐述,很多博客中 ...

  2. Python爬虫实战 下载原力创付费文档---全屏阅览式

    下载原力创付费文档-全屏阅览式 一.项目需求: 从目标网址下载付费文档,并保存为word形式 网址点这里 二.思路 1.利用selenium实现异步加载,获取图片url 2.爬取图片 3.将图片写进w ...

  3. Python爬虫实战 下载原力创付费文档---滑动式

    下载原力创付费文档-滑动式 一.项目需求: 从目标网址下载付费文档,并保存为PDF形式 网址点这里 二.思路 1.利用selenium实现异步加载,获取图片url 2.爬取图片 3.将图片写进word ...

  4. 计算机二级考试试题在线看,【TOP182015年全国计算机二级考试试题题库.doc文档免费在线阅读材料】...

    TOP182015年全国计算机二级考试试题题库.doc文档免费在线阅读 <2015年全国计算机二级考试试题题库.doc>由会员分享,可免费在线阅读全文,更多与<TOP182015年全 ...

  5. java 生成一个空文件系统_如何使用java创建一个空白的PPT文档?

    在Java编程中,如何创建一个空的PPT文档? 注意:需要访问网址: , 下载一个Apache POI软件包.这里下载最新版本:poi-bin-3.17-20170915.tar.gz解压并全部导入 ...

  6. 计算机如何打开office,win10电脑没有office软件如何打开ppt文档

    ‍ ‍ 一些用户在网上下载ppt文档,但是自己win10 64位系统电脑并没有安装office办公软件,所以一直打不开ppt,怎么办呢?针对win10电脑没有office软件却打不开ppt文档的问题, ...

  7. 网页代码扒ppt_在网页中在线浏览ppt文档

    方法一: 把ppt文件的扩展名直接修改为pps,嵌入到网页中 缺点:这种方式浏览器会提示是打开,还是下载,选择打开的话会直接在浏览器中打开,并且客户端一定要安装Office PowerPoint才能打 ...

  8. Python实现自动化办公(三):Python对PPT文档的基本操作(python-pptx)

    Python对PPT文档的基本操作 文章目录 Python对PPT文档的基本操作 一.pptx模块 1.官方文档 2.安装pptx模块 二.基本函数的使用方法 三.使用案例 1.修改ppt内容 2.写 ...

  9. Java在线打开编辑PPT文档

    前言: 在我们的项目中有时候会遇到在线打开PPT文档的需求,这个需求看似很简单,只是将每一页的内容放在网页上浏览一下.可是实现起来又无从下手.其实它是一定会用到微软的接口的,要不然怎么让程序识别渲染P ...

  10. 怎样把ppt转换成html,如何将PPT文档转换成Flash/HTML的方法

    喜欢用PPT做演示说明的用户,偶尔会遇到客户机或其它机器未安装Microsoft Office PowerPoint而无法演示的尴尬.以下是学习啦小编为您带来的关于将PPT文档转换成Flash/HTM ...

最新文章

  1. 对话框窗口最大最小化
  2. 匿名黑客Anonymous实施的8次最强攻击
  3. getchar返回int类型
  4. xtraback2.3版本安装以及简要操作
  5. 将图片读取为像素格式
  6. 让你的照片更鲜艳------hsv拉伸
  7. python中strip(),lstrip(),rstrip()函数的讲解
  8. 推荐一个网站拿下机器学习优质资源!搜索效率极大提高
  9. angular 点击事件阻止冒泡及默认行为
  10. 两个摄像头合成一路_三星推出全新摄像头光电传感器ISOCELL GN1,性能直奔HM1
  11. 程序员过关斩将--真的可以用版本号的方式来保证MQ消费消息的幂等性?
  12. java maven junit_【JUnit】JUnit 与 maven 集成
  13. 千博HTML5自适应企业网站系统源码
  14. 设计模式的一些小整理
  15. java的constructor怎么用,constructor函数 Java中的构造函数Constructor怎么用
  16. python学习笔记1---class
  17. 突破拐点:企业成长的S曲线
  18. 【LuoguP4770】[NOI2018] 你的名字
  19. scrapy爬虫框架结构
  20. 怎么给图片加边框线?图片加边框的方法

热门文章

  1. ojdbc maven
  2. NOIP2017题解
  3. java web项目编译_Java三种编译方式: 前端编译 JIT编译 AOT编译
  4. 数学建模——确定性数学方法
  5. 尚硅谷大数据听课笔记 day2:数据类型
  6. stringbuffer用法 java_StringBuffer的用法
  7. php个人网页完整代码,个人主页php+html
  8. Clover 引导 Windows 及 Linux 双系统
  9. c语言观察程序流程图,程序流程图的画法
  10. 扫描二维码后可以自动跳转到网页