python 实现自动上传文件到百度网盘(附程序源码及实现过程)

把环境搭建完成之后就可以上传文件到自己的百度网盘中。环境搭建移步:

环境准备
python3.6
firefox(最好是最新版,不然不会报错)
Windows 7
框架搭建
selenium3.6
安装方法:
pip install selenium
实现步骤:
一、步骤分析
1、选择“账号密码登录”
2、输入用户名、密码输入,登录
3、文件上传
注:本文主要介绍利用selenium包下的webdriver加载Firefox浏览器。通过加载一个浏览器变量来实现自动上传
利用火狐浏览器firebug插件复制控件的XPATH路径,选用xpath比较准确且速度较快。还有别的通过名称、类ID以及元素等等方法都是可以获取网页页面中的控件。
获取账号密码登录信息:

获取用户名、密码控件xpath信息:

获取登录成功后上传文件按钮控件路径:

综合以上python代码如下:
driver.find_element_by_xpath('/html/body/div[1]/div[3]/div[6]/div/div[6]/div[2]/a').click() #账号密码登录路径

driver.find_element_by_xpath('/html/body/div[1]/div[3]/div[6]/div/div[3]/form/p[5]/input[2]').send_keys(用户名) #账号
driver.find_element_by_xpath('/html/body/div[1]/div[3]/div[6]/div/div[3]/form/p[6]/input[2]').send_keys(密码) # 密码
driver.find_element_by_xpath('/html/body/div[1]/div[3]/div[6]/div/div[3]/form/p[9]/input').click() #设置思考时间 #登录
driver.find_element_by_xpath('//*[@id="h5Input0"]').click() #上传文件

2、登录成功后,点击文件上传,弹出文件对话框
“上传”的Xpath路径为://*[@id="h5Input0"]
代码:
driver.find_element_by_xpath('//*[@id="h5Input0"]').click()
点击上传按钮,弹出文件对话框


三、AutoIT编写脚本实现上传文件
webdriver无法对文件直接进行操作,所以需要借助AutoIT来实现文件上传
AutoIT下载地址:https://www.autoitscript.com/site
安装AutoIt之后,打开AutoIt Window Info(x64)

从上到下依次为:打开嗅探工具 编译au3到exe au3编辑器
4、获取文件上传窗口的控件信息:
打开autoit工具之后,用鼠标将Finder Tool的图标拖到要识别的控件上
获取文本框的控件信息:

开始嗅探文件名

嗅探打开按钮
5、编写AutoIt脚本,实现文件上传
1.打开scite script editor
代码如下:
# coding=utf-8
import time
from selenium import webdriver
driver = webdriver.Firefox() #打开火狐浏览器
driver.get('http://www.baidu.com') #打开百度界面
driver.find_element_by_id('kw').send_keys('China') #在搜索框内输入想要搜索内容
time.sleep(2) # 浏览器加载需要时间
driver.find_element_by_id('su').click() #搜索完成


这块的代码编写完成后,先测试下。
tools---》Go 运行无误后,然后把au3文件转换成exe。
4. 使用compile script to exe将上述AutoIt脚本编译为exe文件供python脚本调用

点击ok即可。
6、最后,使用Python脚本调用AutoIT脚本

完整代码如下:
import os
from selenium import webdriver
import time
#class Connect():

UserName = ''
PassWord = ''
URL = 'https://pan.baidu.com/'
driver = webdriver.Firefox()
driver.get(URL)
driver.find_element_by_xpath('/html/body/div[1]/div[3]/div[6]/div/div[6]/div[2]/a').click()
driver.find_element_by_xpath('/html/body/div[1]/div[3]/div[6]/div/div[3]/form/p[5]/input[2]').send_keys(UserName )
driver.find_element_by_xpath('/html/body/div[1]/div[3]/div[6]/div/div[3]/form/p[6]/input[2]').send_keys(PassWord )
driver.find_element_by_xpath('/html/body/div[1]/div[3]/div[6]/div/div[3]/form/p[9]/input').click()
time.sleep(30) #设置按钮响应的时间
sreach_window = driver.current_window_handle #此行代码用来定位当前页面
driver.find_element_by_xpath('//*[@id="h5Input0"]').click()
os.system(r'C:\\Users\xx\Desktop\upfile.exe')

我的运行结果如下:

这三个文件是我自动上传上去的。