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快速排序代码实例
Nov 21 Python
Python学习之asyncore模块用法实例教程
Sep 29 Python
各种Python库安装包下载地址与安装过程详细介绍(Windows版)
Nov 02 Python
Python 递归函数详解及实例
Dec 27 Python
opencv改变imshow窗口大小,窗口位置的方法
Apr 02 Python
Python爬虫实现抓取京东店铺信息及下载图片功能示例
Aug 07 Python
python在TXT文件中按照某一字符串取出该字符串所在的行方法
Dec 10 Python
Python设计模式之观察者模式原理与用法详解
Jan 16 Python
简单了解python中对象的取反运算符
Jul 01 Python
Python批量修改图片分辨率的实例代码
Jul 04 Python
python输出第n个默尼森数的实现示例
Mar 08 Python
Python利用matplotlib绘制折线图的新手教程
Nov 05 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
将OICQ数据转成MYSQL数据
2006/10/09 PHP
PHP CodeBase:将时间显示为"刚刚""n分钟/小时前"的方法详解
2013/06/06 PHP
解析zend Framework如何自动加载类
2013/06/28 PHP
JavaScript window.setTimeout() 的详细用法
2009/11/04 Javascript
jQuery中(function(){})()执行顺序的理解
2013/03/05 Javascript
jQuery打字效果实现方法(附demo源码下载)
2015/12/18 Javascript
jquery ajax结合thinkphp的getjson实现跨域的方法
2016/06/06 Javascript
Jquery给当前页或者跳转后页面的导航栏添加选中后样式的实例
2016/12/08 Javascript
微信小程序 解决swiper不显示图片的方法
2017/01/04 Javascript
bootstrap制作jsp页面(根据值让table显示选中)
2017/01/05 Javascript
angularjs的select使用及默认选中设置
2017/04/08 Javascript
JQuery 获取Dom元素的实例讲解
2017/07/08 jQuery
使用jquery的jsonp如何发起跨域请求及其原理详解
2017/08/17 jQuery
详解Angular路由之路由守卫
2018/05/10 Javascript
Vue官方推荐AJAX组件axios.js使用方法详解与API
2018/10/09 Javascript
js操作table中tr的顺序实现上移下移一行的效果
2018/11/22 Javascript
Vue2(三)实现子菜单展开收缩,带动画效果实现方法
2019/04/28 Javascript
electron-vue利用webpack打包实现多页面的入口文件问题
2019/05/12 Javascript
JavaScript实现的联动菜单特效示例
2019/07/08 Javascript
jQuery实现简单全选框
2020/09/13 jQuery
Python编程之变量赋值操作实例分析
2017/07/24 Python
新手常见6种的python报错及解决方法
2018/03/09 Python
Python图像处理之简单画板实现方法示例
2018/08/30 Python
python3利用ctypes传入一个字符串类型的列表方法
2019/02/12 Python
Python3+Pycharm+PyQt5环境搭建步骤图文详解
2019/05/29 Python
基于Pyinstaller打包Python程序并压缩文件大小
2020/05/28 Python
python 根据列表批量下载网易云音乐的免费音乐
2020/12/03 Python
全球酒店预订网站:Hotels.com
2016/08/10 全球购物
英国计算机商店:Technextday
2019/12/28 全球购物
荷兰浴室和卫浴网上商店:Badkamerxxl.nl
2020/10/06 全球购物
英国在线定做百叶窗网站:Make My Blinds
2020/08/17 全球购物
党性锻炼的心得体会
2014/09/03 职场文书
初中学习计划书范文
2014/09/15 职场文书
优秀党支部申报材料
2014/12/24 职场文书
三好学生个人总结
2015/02/15 职场文书
2016年乡镇七一建党节活动总结
2016/04/05 职场文书