python下载网站文件到本地,python下载网站所有网页

这篇文章主要介绍了python登录网站自动下载文件,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获,下面让小编带着大家一起了解一下。

Source code download: 本文相关源码

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

55a78e1715bc119ca3566c07fd2d57d9.png

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

7a7e6bc1ffe58989c83c5e27697cc63a.png

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

f9fefdfbf831e8dd6b70c2dd7855df9b.gif

再来看看自动下载脚本

1d543543eda9c6e28d4bf9a12fc7c4cb.gif

分析:

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

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

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

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

983607850a3b120ffd72fa5ab40f6999.gif

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

实现

1.登录

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

局部的实现代码如下:

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

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

完整实现代码如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值