python实现的百度云自动下载

目录

python实现简单的百度自动下载

#coding=utf-8
'''
自动填写提取码下载百度云资源
方法:
for
  读取文件中的连接和提取码
1 打开网页(link)
2 输入提取码
3 下载
'''
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time

driver = webdriver.Chrome()
f = open("baidulink.txt",encoding="utf-8")  
l = open("log.txt","w")             
lines = f.readlines()                
for line in lines: 
    
    if line != '\n':
        if len(line) > 10:
            print (line)  
            list = line.split(" ")
            print (list)
            link = list[2]
            link = link.split(":")[1]
            link = link.strip()
            print (link)
            num = list[3].split(":")[1]
            num = num.strip()
            print (num)
            driver.get(link)
            elem = driver.find_element_by_id("eoX9ze") 
            elem.send_keys(num)
            elem.send_keys(Keys.RETURN)
            time.sleep(1)
            sreach_window = driver.current_window_handle  
            driver.find_element_by_xpath("//*[@id='layoutMain']/div[1]/div[1]/div/div[2]/div/div/div[2]/a[2]").click()
            '''
            写日志,便于检查下载丢失的文件
            '''
            l.writelines(line)
            l.write('\n')
    line = f.readline() 
    time.sleep(3)
f.close() 

我把连接存在 baidulink.txt中,文件是逐行读取,提取出连接和提取

使用selenium模拟浏览器,必须保证你的浏览器是Google Chrome,并装了chromedriver,相关内容自行百度

注意一下几点:

1 elem = driver.find_element_by_id("eoX9ze")

这个id好是会变的,如果变了按F12查看

2 sreach_window = driver.current_window_handle

页面跳转后,需要把driver定位到当前页面

3 driver.find_element_by_xpath("//*[@id='layoutMain']/div[1]/div[1]/div/div[2]/div/div/div[2]/a[2]").click()

这里使用xpath(还有id name selector等,选择适合的),可以使用选择那段代码然后复制xpath

以上功能十分简单,能够节省很多时间。如果频繁下载,会遇到输入验证码的时候,我选择等待,还有其他方法(可以使用代理等)

插件

众多插件

https://github.com/search?l=Python&q=baidu+pan&type=Repositories&utf8=✓

bypy

https://github.com/houtianze/bypy
这是一个百度云/百度网盘的Python客户端。主要的目的就是在Linux环境下(Windows下应该也可用,但没有仔细测试过)通过命令行来使用百度云盘的2TB的巨大空间。比如,你可以用在RaspBerry Pi树莓派上。它提供文件列表、下载、上传、比较、向上同步、向下同步,等操作。

pip install bypy
app授权

第一次运行时,运行下面的代码后,会提示进入以下目录对app进行授权:

from bypy import ByPy
bp=ByPy()
bp.list() 

https://openapi.baidu.com/oauth/2.0/authorize?client_id=q8WE4EpCsau1oS0MplgMKNBn&response_type=code&redirect_uri=oob&scope=basic+netdisk


Paste the Authorization Code here within 10 minutes.
Press [Enter] when you are done


看到这张图,就是已经授权好了,然后你就可以打开我的百度网盘,在这里看到:

查看目标目录bypy下的文件和目录

由于百度PCS API权限限制,程序只能存取百度云端/apps/bypy目录下面的文件和目录
如果你copY一些文件和目录到bypy下,从app角度来看目标目录,一般是这样:

from bypy import ByPy
bp=ByPy()
bp.list() 

授权后运行,得到下面的结果:

相关文章

功能概要:(目前已实现功能)公共展示部分:1.网站首页展示...
大体上把Python中的数据类型分为如下几类: Number(数字) ...
开发之前第一步,就是构造整个的项目结构。这就好比作一幅画...
源码编译方式安装Apache首先下载Apache源码压缩包,地址为ht...
前面说完了此项目的创建及数据模型设计的过程。如果未看过,...
python中常用的写爬虫的库有urllib2、requests,对于大多数比...