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根据unicode判断语言类型实例代码
Jan 17 Python
Python视频爬虫实现下载头条视频功能示例
May 07 Python
python批量识别图片指定区域文字内容
Apr 30 Python
Mac安装python3的方法步骤
Aug 09 Python
python实现的按要求生成手机号功能示例
Oct 08 Python
分享PyCharm的几个使用技巧
Nov 10 Python
使用python的pyplot绘制函数实例
Feb 13 Python
TensorFlow tf.nn.softmax_cross_entropy_with_logits的用法
Apr 19 Python
Python selenium模拟手动操作实现无人值守刷积分功能
May 13 Python
python根据用户需求输入想爬取的内容及页数爬取图片方法详解
Aug 03 Python
Python之字典添加元素的几种方法
Sep 30 Python
Python实现PS滤镜中的USM锐化效果
Dec 04 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+jQuery.uploadify实现文件上传教程
2014/12/26 PHP
php无限级评论嵌套实现代码
2018/04/18 PHP
Jquery之Ajax运用 学习运用篇
2011/09/26 Javascript
javascript实现禁止鼠标滚轮事件
2015/07/24 Javascript
JS实现自动变换的菜单效果代码
2015/09/09 Javascript
javascript电商网站抢购倒计时效果实现
2015/11/19 Javascript
javascript实现右侧弹出“分享到”窗口效果
2016/02/01 Javascript
使用jQuery制作基础的Web图片轮播效果
2016/04/22 Javascript
Jquery基础之事件操作详解
2016/06/14 Javascript
javascript将中国数字格式转换成欧式数字格式的简单实例
2016/08/02 Javascript
详解angularjs利用ui-route异步加载组件
2017/05/21 Javascript
JS实现留言板功能
2017/06/17 Javascript
jquery.picsign图片标注组件实例详解
2018/02/02 jQuery
JS中实现隐藏部分姓名或者电话号码的代码
2018/07/17 Javascript
生成无限制的微信小程序码的示例代码
2019/09/20 Javascript
Python使用xlrd读取Excel格式文件的方法
2015/03/10 Python
python实现带错误处理功能的远程文件读取方法
2015/04/29 Python
Python 多线程抓取图片效率对比
2016/02/27 Python
python引入导入自定义模块和外部文件的实例
2017/07/24 Python
python实现多线程行情抓取工具的方法
2018/02/28 Python
Python import与from import使用及区别介绍
2018/09/06 Python
解决tensorboard多个events文件显示紊乱的问题
2020/02/15 Python
Python paramiko 模块浅谈与SSH主要功能模拟解析
2020/02/29 Python
Python greenlet和gevent使用代码示例解析
2020/04/01 Python
Python如何测试stdout输出
2020/08/10 Python
HTML5 实现一个访问本地文件的实例
2012/12/13 HTML / CSS
将HTML5 Canvas的内容保存为图片借助toDataURL实现
2013/05/20 HTML / CSS
html5教程画矩形代码分享
2013/12/04 HTML / CSS
汽车技术服务与营销专业在籍生自荐信
2013/09/28 职场文书
第二批党的群众路线教育实践活动总结报告
2014/10/30 职场文书
2014个人年度工作总结范文
2014/12/24 职场文书
鸟的天堂导游词
2015/01/31 职场文书
电力安全学习心得体会
2016/01/18 职场文书
Python爬虫:从m3u8文件里提取小视频的正确操作
2021/05/14 Python
spring cloud gateway中如何读取请求参数
2021/07/15 Java/Android
InterProcessMutex实现zookeeper分布式锁原理
2022/03/21 Java/Android