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中3种内建数据结构:列表、元组和字典
Nov 30 Python
用Python写飞机大战游戏之pygame入门(4):获取鼠标的位置及运动
Nov 05 Python
Python中死锁的形成示例及死锁情况的防止
Jun 14 Python
Python在信息学竞赛中的运用及Python的基本用法(详解)
Aug 15 Python
用python 批量更改图像尺寸到统一大小的方法
Mar 31 Python
python实现随机调用一个浏览器打开网页
Apr 21 Python
Python实现简易过滤删除数字的方法小结
Jan 09 Python
pandas.DataFrame的pivot()和unstack()实现行转列
Jul 06 Python
Python爬虫爬取Bilibili弹幕过程解析
Oct 10 Python
python自动生成model文件过程详解
Nov 02 Python
Python有参函数使用代码实例
Jan 06 Python
Python趣味爬虫之用Python实现智慧校园一键评教
May 28 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设计模式之装饰者模式
2012/02/29 PHP
PHP url的pathinfo模式加载不同控制器的简单实现
2016/08/12 PHP
document.body.scrollTop 值总为0的解决方法 比较常见的标准问题
2009/11/30 Javascript
JS 添加千分位与去掉千分位的示例
2013/07/11 Javascript
jquery将一个表单序列化为一个对象的方法
2013/12/02 Javascript
JS实现带缓冲效果打开、关闭、移动一个层的方法
2015/05/09 Javascript
详解JavaScript中的blink()方法的使用
2015/06/08 Javascript
JavaScript获取function所有参数名的方法
2015/10/30 Javascript
详解Bootstrap插件
2016/04/25 Javascript
js中判断变量类型函数typeof的用法总结
2016/08/09 Javascript
jQuery向webApi提交post json数据
2017/01/16 Javascript
angularJS 指令封装回到顶部示例详解
2017/01/22 Javascript
ES6中module模块化开发实例浅析
2017/04/06 Javascript
react.js CMS 删除功能的实现方法
2017/04/17 Javascript
JS实现的JSON数组去重算法示例
2018/04/11 Javascript
Bootstrap4 gulp 配置详解
2019/01/06 Javascript
详解超简单的react服务器渲染(ssr)入坑指南
2019/02/28 Javascript
windows下python之mysqldb模块安装方法
2017/09/07 Python
Python笔记之观察者模式
2019/11/20 Python
python 基于Apscheduler实现定时任务
2020/12/15 Python
利用纯CSS3实现文字向右循环闪过效果实例(可用于移动端)
2017/06/15 HTML / CSS
日本钓鱼渔具和户外用品网上商店:naturum
2016/08/07 全球购物
俄罗斯护发和专业化妆品购物网站:Hihair
2019/09/28 全球购物
澳大利亚领先的亚麻品牌:Bed Threads
2019/12/16 全球购物
工商管理应届生求职信
2013/10/07 职场文书
银行存款证明样本
2014/01/17 职场文书
抗洪救灾标语
2014/10/08 职场文书
违反交通安全法检讨书
2014/10/24 职场文书
维稳承诺书
2015/01/20 职场文书
中秋客户感谢信
2015/01/22 职场文书
给领导的感谢信范文
2015/01/23 职场文书
玄武湖导游词
2015/02/05 职场文书
2015年银行个人工作总结
2015/05/14 职场文书
三八妇女节新闻稿
2015/07/17 职场文书
2019最新版股权转让及委托持股协议书范本
2019/08/07 职场文书
php 原生分页
2021/04/01 PHP