昨天接到了忻总的一个需求,要从一个自制的网盘上逐个下载文件

这个网盘最蛋疼的地方在于文件夹内如果还有文件夹就不能完成打包下载,应该是网站的提供者不希望资源被盗用

先来看看正常下载的步骤:

再来看看自动下载脚本

分析:

通过开发者工具可以看到左部文件夹导航栏中文件夹的class名称为‘jstree-anchor ’,并且每次点击文件夹之后页面会动态添加响应的子文件夹,class名称同样为’ jstree-anchor ‘

动态渲染就限制了我们不能使用Xpath或Beautifulsoup直接把静态页面抓取下来后直接进行分析下载,所以我们选择Selenuim库并使用其中的WebDriver进行自动化操作

那么我们应当如何判断已经到达底层的文件夹,也就是文件夹内部没有嵌套文件夹了呢? 之前有提到,每次点击文件夹之后,如果有子文件夹,那么网页会自动向网页中添加响应的子文件夹,我们可以通过计算页面在点击事件之前class为’ jstree-anchor ‘的对象个数和点击之后的个数进行对比,如果相同则证明已经进入最底层的文件夹,此时只要依次进行右部文件的下载即可。

那么我们就来到了最后一步,选择文件进行下载,通过观察我们可以发现我们把鼠标移动至响应的文件上时,响应对象的css会添加一个名为’hover’的class并且显示下载按钮。

Selenuim提供的功能中似乎没有直接改变网页中对象属性的api,那么怎么办呢?别忘了execute_script方法,理论上任何未提供的功能都可以通过Javascript来实现,问题就此变的简单了,我们可以通过document.getElementById找到下载按钮,点击,即可完成下载。

实现

1.登录

2.点击文件夹,确保目前处于最底层,没有文件夹嵌套

局部的实现代码如下:

定义new和old两个变量分别对应点击事件前后的特定class对象个数,current作为计数器,统计我们现在点击到第几个文件夹

3.根据文件列表逐一下载

完整实现代码如下:

python 自动下载网页链接_用python做一个网页自动下载脚本相关推荐

  1. python 抓取网页链接_从Python中的网页抓取链接

    python 抓取网页链接 Prerequisite: 先决条件: Urllib3: It is a powerful, sanity-friendly HTTP client for Python ...

  2. python如何提取网络链接_Python网络爬虫——把一个网页中所有的链接地址提取出来(去重)...

    # 把一个网页中所有的链接地址提取出来. 运行环境Python3.6.4-实现代码:import urllib.request import re #1. 确定好要爬取的入口链接 url = &quo ...

  3. python数据维度小测试_数据分析|如何做一个ABtest测验

    A/B-test是为同一个目标制定两个方案,在同一时间维度,分别让组成成分相同(相似)的用户群组随机的使用一个方案,收集各群组的用户体验数据和业务数据,最后根据显著性检验分析评估出最好版本正式采用. ...

  4. python下载url链接_使用Python从url地址下载所有pdf文件

    我需要找到一种方法来下载给定url中的所有pdf文件,然后我找到了一个脚本,该脚本可能--我还没有测试过--完成了这个任务:import urllib.parse import urllib2 imp ...

  5. python 执行js打开链接_使用Python在链接的href中执行JavaScript

    javascript:打开窗口交付("http://bibliotecadigitalhispanica.bne.es:80/webclient/DeliveryManager?applic ...

  6. 易语言Linux编写网页访问,用易语言做一个网页post采集和登录

    [Erlang] 纯文本查看 复制代码.版本 2 .子程序 功能_访问_, 文本型, , 本子程序由fd插件生成 .局部变量 网址, 文本型 .局部变量 方式, 整数型 .局部变量 结果, 文本型 . ...

  7. python 网页编程_通过Python编程检索网页

    python 网页编程 The internet and the World Wide Web (WWW), is probably the most prominent source of info ...

  8. 用python做生日礼物_如何做一个网页送给女朋友做生日礼物?

    如何做一个网页送给女朋友做生日礼物 本文里面涉及到python,HTML ,css,JavaScript的知识,是基于python的flask框架做的一个小型网站,里面可以实现跳转功能,怎么配置fla ...

  9. python 提取网页正文_用Python写个爬虫小程序,给女朋友每日定时推送睡前小故事...

    ↑ 关注 + 星标 ,每天学Python新技能后台回复[大礼包]送你Python自学大礼 导读:这篇文章利用简单的Python爬虫.邮件发送以及定时任务实现了每天定时发送睡前小故事的功能,是一篇步骤详 ...

  10. html网页注册信息不完全时有警示_??使用Github做一个完全免费的个人网站(步骤很细)...

    首先,我霸都傲天申明绝对是完全免费,不会在文章中推销什么云服务器,虚拟主机等.而且操作步骤上手简单,即使非IT人员也很容易实现. 局限:只能是静态网站的个人网站 面向读者:所有人包括非IT人员 首先如 ...

最新文章

  1. 【比较面】真核生物和原核生物的异同
  2. php隐藏表单提交表单提交表单_表单提交及php处理表单数据的实例
  3. Oracle查询慢的原因总结
  4. COM 组件设计与应用(十一)
  5. tar打包的时候忽略一些目录
  6. jQuery的ajax提交表单
  7. linux与pc机网络通信,PC宿主机和目标机通信方式
  8. Android 开发环境搭建之——ADT-Bundle for Windows
  9. eclipse启动失败,报an error has occurred.see the log file错
  10. matlab 振动,振动系统固有特性的matlab计算
  11. 事业单位计算机常识PPT,计算机基础知识:PPT常用操作(六)
  12. Win11桌面便签小工具下载 支持与手机同步的桌面便签工具下载
  13. android http统一回调,Android使用OKHttp构建带进度回调的多文件下载器
  14. Java基础知识总结(超级经典)
  15. 第六章代码的问题——基于DirectX11的3D图形程序设计案例教程——重庆大学出版社
  16. php网页设计导航栏代码,CSS导航栏及弹窗示例代码
  17. 高客单价项目,适合新手操作的网络项目
  18. js 26个字母排序
  19. C++下的OpenCV中Mat类型存储的图像格式
  20. SAP CRM BOL entity deletion - root node and sub node

热门文章

  1. js 生成条形码(JsBarcode.all.min.js)
  2. 由简入难学习3d机械制图软件顺序?Pro/Engineer 与CREO有何不同。
  3. Redis 下载安装(Windows版本)
  4. spss26没有典型相关性分析_如何在SPSS中实现典型相关分析
  5. 【自动驾驶】PurePursuit实现轨迹跟踪
  6. java的常量池的大小,Java 常量池注意点
  7. 微信小程序开发中医药配方小程序药方后台管理系统|前后分离VUE.js
  8. java刷题--69x的平方根
  9. 2022五一数学建模有何思路模型?
  10. matlab机械臂工作空间代码_焊接机械臂工作站的搭建与组装|焊枪|焊机|电缆|机器人...