欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

python下载百度云加密分享文件

程序员文章站 2024-03-21 16:14:58
...

最近了解了一下python,刚好朋友分享了一个百度云的加密连接,于是突发奇想能不能不直接用浏览器手工下载,用python代码实现一个自动化下载,这样如果有大量的百度云加密分享内容就不用苦B的用手一个一个去下载了。下面是详细的实现步骤:

一、准备工作

    1.windows操作系统(任意一个操作系统都行,我用的是win10)
    2.python的开发环境(现在有python2.7和python3.6两个大版本,我用的是python2.7)
    3.安装一些过程中需要使用到的python库selenium
    4.下载一个chromedriver.exe(我用的是chrome浏览器所以使用这个驱动,[chromedriver下载](下载http://chromedriver.storage.googleapis.com/index.html)
    5.百度云分享的连接地址与密码
复制代码

二、直接上代码(引用Linux 的创始人 Linus Torvalds的一句话:Talk is cheap,show me the code)

    from selenium import webdriver
    import time
    from selenium.webdriver.common.by import By
    from selenium.webdriver.common.keys import Keys
    
    #百度云分享的地址
    url = "https://pan.baidu.com/s/1NhowUs5LKTHWE8zpx_QZcA"
    #分享密码
    pwd = "k5ru"
    #这里要传入chromedriver.exe的地址,或者将该文件放到待执行python脚本的同目录下
    browser = webdriver.Chrome("D:\\python\\chromedriver.exe")
    #请求连接
    browser.get(url)
    #这里休息一下让浏览器加载页面,否则可能因获取不到元素报错,下面的sleep同理
    time.sleep(1)
    #获取输入分享密码的输入框(右键审查元素,找到对应的输入框,然后可以查看到其类为QKKaIE)
    input_ =  browser.find_element(By.CLASS_NAME,"QKKaIE")
    #将密码自动填充到输入框
    input_.send_keys(pwd, Keys.ARROW_DOWN)
    #获取提交按钮
    submit_button = browser.find_element(By.CLASS_NAME,"text")
    #提交
    submit_button.click()
    
    time.sleep(1)
    #获取下载按钮,这里下载按钮没有直接给可以区分的类名所以用xpath方式获取(其实我也不懂什么是xpath在网上找的)
    download_btn = browser.find_element(By.CLASS_NAME,"x-button-box").find_element_by_xpath('//*[@data-button-id="b3"]')
    #下载
    download_btn.click()
    #关闭资源
    browser.close()
复制代码

三、说明

1.本文采用的是一个自动化软件测试工具Selenium(为了不给别人打广告就请读者自行搜索selenium使用教程,很简单的)
2.我原本想使用Request或是beautifulsoup这样的爬虫组合,设置header或是cookie的方式去模拟浏览器,但研究了一下,发现百度云这个网站不是很好模拟,到后面还需要输入验证码,处理起来很麻烦,最终还是选择了selenium这种傻瓜式的操作。
3.采用什么工具或技术并不重要,重要的是实现我们的目标
4.如果有人能用纯代码的形式模拟浏览器实现百度云加密分享文件的下载也欢迎分享
复制代码

四、文章结尾

笔者第一次在掘金上发表文章,就连markdown这种编辑器也是刚学来用的(说实话用起来还不错,比之前使用纯文本的方式记笔记好多了),有什么写的不好的地方欢迎大家指出,谢谢。复制代码