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生成url短链接的方法
May 04 Python
python比较2个xml内容的方法
May 11 Python
python 开发的三种运行模式详细介绍
Jan 18 Python
Python文件的读写和异常代码示例
Oct 31 Python
详解python eval函数的妙用
Nov 16 Python
使用python 和 lint 删除项目无用资源的方法
Dec 20 Python
Django基于ORM操作数据库的方法详解
Mar 27 Python
python多行字符串拼接使用小括号的方法
Mar 19 Python
8种用Python实现线性回归的方法对比详解
Jul 10 Python
Python实现在线批量美颜功能过程解析
Jun 10 Python
Python  word实现读取及导出代码解析
Jul 09 Python
Python基础知识之变量的详解
Apr 14 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
浅析application/x-www-form-urlencoded和multipart/form-data的区别
2014/06/22 PHP
浅谈PDO的rowCount函数
2015/06/18 PHP
Laravel构建即时应用的一种实现方法详解
2017/08/31 PHP
php输出反斜杠的实例方法
2019/09/19 PHP
php实现根据身份证获取精准年龄
2020/02/26 PHP
jquery1.4后 jqDrag 拖动 不可用
2010/02/06 Javascript
jQuery点击后一组图片左右滑动的实现代码
2012/08/16 Javascript
jquery 列表双向选择器之改进版
2013/08/09 Javascript
javascript监听鼠标滚轮事件浅析
2014/06/05 Javascript
简介JavaScript中的sub()方法的使用
2015/06/08 Javascript
JavaScript中的Math.sin()方法使用详解
2015/06/15 Javascript
jQuery实现的个性化返回底部与返回顶部特效代码
2015/10/30 Javascript
jQuery div拖拽用法实例
2016/01/14 Javascript
第一个Vue插件从封装到发布
2017/11/22 Javascript
Angular模版驱动表单的使用总结
2018/05/05 Javascript
解决微信浏览器缓存站点入口文件(IIS部署Vue项目)
2019/06/17 Javascript
基于Ionic3实现选项卡切换并重新加载echarts
2020/09/24 Javascript
Python开发的实用计算器完整实例
2017/05/10 Python
Bottle框架中的装饰器类和描述符应用详解
2017/10/28 Python
pycharm+django创建一个搜索网页实例代码
2018/01/24 Python
Python入门学习指南分享
2018/04/11 Python
Python3.5模块的定义、导入、优化操作图文详解
2019/04/27 Python
python实现猜数字游戏
2020/03/25 Python
使用python模拟高斯分布例子
2019/12/09 Python
python 列表、字典和集合的添加和删除操作
2019/12/16 Python
Python自动采集微信联系人的实现示例
2020/02/28 Python
Python同时处理多个异常的方法
2020/07/28 Python
用python制作个音乐下载器
2021/01/30 Python
CSS3 实现倒计时效果
2020/11/25 HTML / CSS
法国亚马逊官方网站:Amazon.fr
2020/12/19 全球购物
爱心捐助倡议书
2014/05/19 职场文书
2014年党支部学习材料
2014/05/19 职场文书
综合测评个人总结
2015/03/03 职场文书
2015年大学生暑期实习报告
2015/07/13 职场文书
分析ZooKeeper分布式锁的实现
2021/06/30 Java/Android
Java实现超大Excel文件解析(XSSF,SXSSF,easyExcel)
2022/07/15 Java/Android