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实现获取操作系统版本信息方法
Apr 08 Python
Python2.x版本中cmp()方法的使用教程
May 14 Python
Python实现二叉树结构与进行二叉树遍历的方法详解
May 24 Python
Python字符串处理实现单词反转
Jun 14 Python
详解python中的线程
Feb 10 Python
把pandas转换int型为str型的方法
Jan 29 Python
python对文件目录的操作方法实例总结
Jun 24 Python
python 并发编程 阻塞IO模型原理解析
Aug 20 Python
解决python 3 urllib 没有 urlencode 属性的问题
Aug 22 Python
Python 添加文件注释和函数注释操作
Aug 09 Python
详解Python中如何将数据存储为json格式的文件
Nov 18 Python
Python修改DBF文件指定列
Dec 19 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 数据库字段复用的基本原理与示例
2011/07/22 PHP
ThinkPHP利用PHPMailer实现邮件发送实现代码
2013/09/26 PHP
PHP回溯法解决0-1背包问题实例分析
2015/03/23 PHP
phpcms中的评论样式修改方法
2016/10/21 PHP
PHP微信PC二维码登陆的实现思路
2017/07/13 PHP
javascript语言结构小记(一)
2011/09/10 Javascript
禁止你的左键复制实用技巧
2013/01/04 Javascript
jQuery提交多个表单的小例子
2013/06/30 Javascript
JS按回车键实现登录的方法
2014/08/25 Javascript
一个不错的仿携程自定义数据下拉选择select
2014/09/01 Javascript
javascript中caller和callee详解
2015/08/10 Javascript
jquery+html5时钟特效代码分享(可设置闹钟并且语音提醒)
2020/03/30 Javascript
Node.js本地文件操作之文件拷贝与目录遍历的方法
2016/02/16 Javascript
js表单元素checked、radio被选中的几种方法(详解)
2016/08/22 Javascript
全新打包工具parcel零配置vue开发脚手架
2018/01/11 Javascript
微信小程序引用iconfont图标的方法
2018/10/22 Javascript
create-react-app使用antd按需加载的样式无效问题的解决
2019/02/26 Javascript
vue 获取到数据但却渲染不到页面上的解决方法
2020/11/19 Vue.js
python基础教程之lambda表达式使用方法
2014/02/12 Python
Python标准库内置函数complex介绍
2014/11/25 Python
探究Python的Tornado框架对子域名和泛域名的支持
2015/05/02 Python
Python跨文件全局变量的实现方法示例
2017/12/10 Python
python爬取m3u8连接的视频
2018/02/28 Python
浅谈Python Opencv中gamma变换的使用详解
2018/04/02 Python
对python模块中多个类的用法详解
2019/01/10 Python
python最小生成树kruskal与prim算法详解
2019/01/17 Python
PyQt5 加载图片和文本文件的实例
2019/06/14 Python
Python基于jieba, wordcloud库生成中文词云
2020/05/13 Python
Python+Kepler.gl实现时间轮播地图过程解析
2020/07/20 Python
Pytest单元测试框架如何实现参数化
2020/09/05 Python
HTML5之SVG 2D入门11—用户交互性(动画)介绍及应用
2013/01/30 HTML / CSS
上海奥佳笔试题面试题
2016/11/16 面试题
应届生法律求职信
2013/10/22 职场文书
优秀毕业自我鉴定
2014/02/15 职场文书
2016父亲节感恩话语
2015/12/09 职场文书
CSS3中Animation实现简单的手指点击动画的示例
2021/07/15 HTML / CSS