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中的推导式使用详解
Jun 03 Python
Python实现监控程序执行时间并将其写入日志的方法
Jun 30 Python
Python+Pika+RabbitMQ环境部署及实现工作队列的实例教程
Jun 29 Python
Python使用sorted排序的方法小结
Jul 28 Python
基于Python对象引用、可变性和垃圾回收详解
Aug 21 Python
解决新版Pycharm中Matplotlib图像不在弹出独立的显示窗口问题
Jan 15 Python
django 实现将本地图片存入数据库,并能显示在web上的示例
Aug 07 Python
Python列表的切片实例讲解
Aug 20 Python
Windows下python3安装tkinter的问题及解决方法
Jan 06 Python
Python基于Tkinter编写crc校验工具
May 06 Python
python归并排序算法过程实例讲解
Nov 04 Python
用python查找统一局域网下ip对应的mac地址
Jan 13 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
ajax在joomla中的原生态应用代码
2012/07/19 PHP
测试PHP连接MYSQL成功与否的代码
2013/08/16 PHP
php 5.4 全新的代码复用Trait详解
2017/01/05 PHP
Javascript 日期处理之时区问题
2009/10/08 Javascript
JQuery Easyui Tree的oncheck事件实现代码
2010/05/28 Javascript
让ie运行js时提示允许阻止内容运行的解决方法
2010/10/24 Javascript
鼠标划过实现延迟加载并隐藏层的js代码
2013/10/11 Javascript
无闪烁更新网页内容JS实现
2013/12/19 Javascript
js实现tab切换效果实例
2015/09/16 Javascript
总结JavaScript中布尔操作符||与&&的使用技巧
2015/11/17 Javascript
js实现接收表单的值并将值拼在表单action后面的方法
2015/11/23 Javascript
JavaScript比较当前时间是否在指定时间段内的方法
2016/08/02 Javascript
js仿新浪微博消息发布功能
2017/02/17 Javascript
js实现首屏延迟加载实现方法 js实现多屏单张图片延迟加载效果
2017/07/17 Javascript
微信小程序实现图片翻转效果的实例代码
2019/09/20 Javascript
vue实现lodop打印功能的示例
2020/11/11 Javascript
在Python的Flask框架下收发电子邮件的教程
2015/04/21 Python
python中base64加密解密方法实例分析
2015/05/16 Python
Python的Twisted框架中使用Deferred对象来管理回调函数
2016/05/25 Python
django 常用orm操作详解
2017/09/13 Python
Queue 实现生产者消费者模型(实例讲解)
2017/11/13 Python
在Windows中设置Python环境变量的实例讲解
2018/04/28 Python
Python求离散序列导数的示例
2019/07/10 Python
基于django传递数据到后端的例子
2019/08/16 Python
详解Python self 参数
2019/08/30 Python
30秒学会30个超实用Python代码片段【收藏版】
2019/10/15 Python
Urban Outfitters英国官网:美国平价服饰品牌
2016/11/25 全球购物
Foot Locker加拿大官网:美国知名运动产品零售商
2019/07/21 全球购物
小班重阳节活动方案
2014/02/08 职场文书
一年级班主任感言
2014/03/08 职场文书
延安红色之旅心得体会
2014/10/07 职场文书
2014年教育实习工作总结
2014/11/22 职场文书
秦始皇兵马俑导游词
2015/02/02 职场文书
小学运动会入场词
2015/07/18 职场文书
Nginx解决403 forbidden的完整步骤
2021/04/01 Servers
django 认证类配置实现
2021/11/11 Python