Python实现对百度云的文件上传(实例讲解)


Posted in Python onOctober 21, 2017

环境准备

python3.6

PyCharm 2017.1.3

Windows环境

框架搭建

selenium3.6

安装方法:

pip install selenium

实现步骤:

一、步骤分析

1、选择“账号密码登录”

2、用户名、密码输入,登录

3、文件上传

注:本文主要介绍利用selenium包下的webdriver加载Firefox浏览器。

二、元素捕捉

利用火狐浏览器firebug插件复制控件的XPATH路径,注:Python3.6对应Firefox版本40.x,暂不支持最新版本50.x。

Python实现对百度云的文件上传(实例讲解)

1、点击“账号密码登录”,获取其源文件

Python实现对百度云的文件上传(实例讲解)

效果图如下:

Python实现对百度云的文件上传(实例讲解)

点击右键,复制Xpath路径:/html/body/div[1]/div[3]/div[6]/div/div[6]/div[2]/a

登录按钮和文件上传同上,获取其相应的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').send_keys('username')
driver.find_element_by_xpath('/html/body/div[1]/div[3]/div[6]/div/div[3]/form/p[6]/input').send_keys('password')
driver.find_element_by_xpath('/html/body/div[1]/div[3]/div[6]/div/div[3]/form/p[9]/input').click()

2、登录成功后,点击文件上传,弹出文件对话框

“上传”的Xpath路径为://*[@id="h5Input0"]

代码:

#上传
driver.find_element_by_xpath('//*[@id="h5Input0"]').click()

点击上传按钮,弹出文件对话框

Python实现对百度云的文件上传(实例讲解)

三、AutoIT编写脚本实现上传文件

webdriver无法对文件直接进行操作,所以需要借助AutoIT来实现文件上传

AutoIT下载地址:https://www.autoitscript.com/site

安装AutoIt之后,打开AutoIt Window Info(x64)
Python实现对百度云的文件上传(实例讲解)
Python实现对百度云的文件上传(实例讲解)

4、获取文件上传窗口的控件信息:

打开autoit工具之后,用鼠标将Finder Tool的图标拖到要识别的控件上

获取文本框的控件信息:
Python实现对百度云的文件上传(实例讲解)

获取“打开”按钮的控件信息:
Python实现对百度云的文件上传(实例讲解)

5、编写AutoIt脚本,实现文件上传

1.打开scite script editor

2.代码:

;ControlFocus("title", "text", controlID) Edit1=Edit instance 1
ControlFocus("文件上传", "","Edit1")

;Wait 10 seconds for the Upload window to appear
WinWait("[CLASS:#32770]", "",10)

;Set the File name thext on the Edit field
ControlSetText("文件上传", "", "Edit1", "D:\test.txt")
Sleep(2000)

;Click on the Open button
ControlClick("文件上传", "", "Button1");

3. 将文件保存upfile.au3

Python实现对百度云的文件上传(实例讲解)
4. 使用compile script to exe将上述AutoIt脚本编译为exe文件供python脚本调用
Python实现对百度云的文件上传(实例讲解)

6、最后,使用Python脚本调用AutoIT脚本

#点击上传,打开上传文件窗口
driver.find_element_by_xpath('/html/body/div[1]/div[2]/div[1]/div[2]/div[2]/div[2]/a[1]/form/input').click()

#使用autoit脚本自动上传文件
#需要导入python的os库文件: import os
os.system("D:/upfile.exe")

完整代码如下:

import os
from selenium import webdriver
import time
class Connect():
 def __init__(self,UserName,PassWord,URL):
  self.UserName = UserName
  self.PassWord = PassWord
  self.URL = URL
 def connect(self):
  self.driver = webdriver.Firefox()
  self.driver.get(self.URL)
  self.driver.find_element_by_xpath('/html/body/div[1]/div[3]/div[6]/div/div[6]/div[2]/a').click()
  self.driver.find_element_by_xpath('/html/body/div[1]/div[3]/div[6]/div/div[3]/form/p[5]/input').send_keys(self.UserName)
  self.driver.find_element_by_xpath('/html/body/div[1]/div[3]/div[6]/div/div[3]/form/p[6]/input').send_keys(self.PassWord)
  self.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 = self.driver.current_window_handle # 此行代码用来定位当前页面
  self.driver.find_element_by_xpath('//*[@id="h5Input0"]').click()
  os.system(r"C:\Users\zg\Desktop\upfile.exe")
Connect(UserName,PassWord,URL).upload()

以上这篇Python实现对百度云的文件上传(实例讲解)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python操作MongoDB基础知识
Nov 01 Python
Python的Flask框架与数据库连接的教程
Apr 20 Python
对python 矩阵转置transpose的实例讲解
Apr 17 Python
使用实现XlsxWriter创建Excel文件并编辑
May 04 Python
python实现textrank关键词提取
Jun 22 Python
Python 互换字典的键值对实例
Feb 12 Python
NumPy 数组使用大全
Apr 25 Python
对python 中class与变量的使用方法详解
Jun 26 Python
详解Python中正则匹配TAB及空格的小技巧
Jul 26 Python
python如何写个俄罗斯方块
Nov 06 Python
python中的装饰器该如何使用
Jun 18 Python
python随机打印成绩排名表
Jun 23 Python
Python3操作SQL Server数据库(实例讲解)
Oct 21 #Python
Python3实现简单可学习的手写体识别(实例讲解)
Oct 21 #Python
python虚拟环境virtualenv的使用教程
Oct 20 #Python
Python环境搭建之OpenCV的步骤方法
Oct 20 #Python
详解如何用OpenCV + Python 实现人脸识别
Oct 20 #Python
python中的计时器timeit的使用方法
Oct 20 #Python
浅谈Python peewee 使用经验
Oct 20 #Python
You might like
php获取post中的json数据的实现方法
2011/06/08 PHP
2014最热门的24个php类库汇总
2014/12/18 PHP
Maps Javascript
2007/01/22 Javascript
发布BlueShow v1.0 图片浏览器(类似lightbox)blueshow.js 打包下载
2007/07/21 Javascript
js中判断文本框是否为空的两种方法
2011/07/31 Javascript
JS设置网页图片vspace和hspace属性的方法
2015/04/01 Javascript
举例说明JavaScript中的实例对象与原型对象
2016/03/11 Javascript
bootstrap table 多选框分页保留示例代码
2017/03/08 Javascript
nodejs个人博客开发第二步 入口文件
2017/04/12 NodeJs
JS获取字符对应的ASCII码实例
2017/09/10 Javascript
angular第三方包开发整理(小结)
2018/04/19 Javascript
详解VUE自定义组件中用.sync修饰符与v-model的区别
2018/06/26 Javascript
JavaScript设计模式之代理模式简单实例教程
2018/07/03 Javascript
createObjectURL方法实现本地图片预览
2019/09/30 Javascript
Djang中静态文件配置方法
2015/07/30 Python
python交互式图形编程实例(三)
2017/11/17 Python
Django框架教程之正则表达式URL误区详解
2018/01/28 Python
Python抽象和自定义类定义与用法示例
2018/08/23 Python
Django框架模板用法入门教程
2019/11/04 Python
python创建子类的方法分析
2019/11/28 Python
Python基础类继承重写实现原理解析
2020/04/03 Python
5行Python代码实现图像分割的步骤详解
2020/05/25 Python
详解Tensorflow不同版本要求与CUDA及CUDNN版本对应关系
2020/08/04 Python
Python爬取豆瓣数据实现过程解析
2020/10/27 Python
CSS3中的弹性布局em运用入门详解 1em等于多少像素
2021/02/08 HTML / CSS
5个你不知道的HTML5的接口介绍
2013/08/07 HTML / CSS
详解canvas.toDataURL()报错的解决方案全都在这了
2020/03/31 HTML / CSS
美国最大的在线寄售和旧货店:Swap.com
2018/08/27 全球购物
德国、奥地利和瑞士最大的旅行和度假门户网站:HolidayCheck
2019/11/14 全球购物
abstract class和interface有什么区别
2013/08/04 面试题
军训鉴定表自我鉴定
2014/02/13 职场文书
财务会计专业自荐书
2014/06/30 职场文书
违反交通安全法检讨书
2014/10/24 职场文书
人事局接收函
2015/01/31 职场文书
营业员岗位职责
2015/02/11 职场文书
运动会班级前导词
2015/07/20 职场文书