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 09 Python
探究Python的Tornado框架对子域名和泛域名的支持
May 02 Python
使用Python脚本和ADB命令实现卸载App
Feb 10 Python
Python实现删除列表中满足一定条件的元素示例
Jun 12 Python
Python使用wxPython实现计算器
Jan 30 Python
Python利用openpyxl库遍历Sheet的实例
May 03 Python
Python类装饰器实现方法详解
Dec 21 Python
Django实现学员管理系统
Feb 26 Python
Python 调用有道翻译接口实现翻译
Mar 02 Python
django-xadmin根据当前登录用户动态设置表单字段默认值方式
Mar 13 Python
基于Python实现视频的人脸融合功能
Jun 12 Python
python操作ini类型配置文件的实例教程
Oct 30 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
jQuery的实现原理的模拟代码 -4 重要的扩展函数 extend
2010/08/03 Javascript
javascript中xml操作实现代码
2011/11/21 Javascript
javascript打开word文档的方法
2014/04/16 Javascript
JavaScript中setUTCFullYear()方法的使用简介
2015/06/12 Javascript
原生JS实现拖拽图片效果
2020/08/27 Javascript
javascript拖拽应用实例(二)
2016/03/25 Javascript
Html中 IFrame的用法及注意点
2016/12/22 Javascript
JavaScript中日常收集常见的10种错误(推荐)
2017/01/08 Javascript
angularjs过滤器--filter与ng-repeat配合有奇效
2017/04/20 Javascript
基于jQuery选择器之表单对象属性筛选选择器的实例
2017/09/19 jQuery
JS实现的简单标签点击切换功能示例
2017/09/21 Javascript
浅谈用Webpack路径压缩图片上传尺寸获取的问题
2018/02/22 Javascript
Vue Extends 扩展选项用法完整实例
2019/09/17 Javascript
vuex(vue状态管理)的特殊应用案例分享
2020/03/03 Javascript
Vue项目页面跳转时浏览器窗口上方显示进度条功能
2020/03/26 Javascript
微信小程序基于ColorUI构建皮皮虾短视频去水印组件
2020/11/04 Javascript
[02:54]DOTA2英雄基础教程 撼地者
2014/01/14 DOTA
测试、预发布后用python检测网页是否有日常链接
2014/06/03 Python
python中类变量与成员变量的使用注意点总结
2017/04/29 Python
python实现祝福弹窗效果
2019/04/07 Python
Python闭包和装饰器用法实例详解
2019/05/22 Python
详解Python3 pandas.merge用法
2019/09/05 Python
python 扩展print打印文件路径和当前时间信息的实例代码
2019/10/11 Python
Python类中self参数用法详解
2020/02/13 Python
利用python批量爬取百度任意类别的图片的实现方法
2020/10/07 Python
Html5 滚动穿透的方法
2019/05/13 HTML / CSS
使用SVG实现提示框功能的示例代码
2020/06/05 HTML / CSS
亚洲领先的旅游体验市场:Voyagin
2019/11/23 全球购物
投标服务承诺书
2014/05/28 职场文书
文明寝室标语
2014/06/13 职场文书
公司委托书怎么写
2014/08/02 职场文书
锅炉工岗位职责
2015/02/13 职场文书
2015年国庆节新闻稿
2015/07/18 职场文书
详解RedisTemplate下Redis分布式锁引发的系列问题
2021/04/27 Redis
基于PyTorch实现一个简单的CNN图像分类器
2021/05/29 Python
python通过opencv调用摄像头操作实例分析
2021/06/07 Python