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的几种开发工具介绍
Mar 07 Python
通过python下载FTP上的文件夹的实现代码
Feb 10 Python
跟老齐学Python之通过Python连接数据库
Oct 28 Python
在Python的列表中利用remove()方法删除元素的教程
May 21 Python
numpy排序与集合运算用法示例
Dec 15 Python
python实现音乐下载的统计
Jun 20 Python
在pycharm 中添加运行参数的操作方法
Jan 19 Python
win10下安装Anaconda的教程(python环境+jupyter_notebook)
Oct 23 Python
Python3 A*寻路算法实现方式
Dec 24 Python
Python中logging日志库实例详解
Feb 19 Python
django有哪些好处和优点
Sep 01 Python
python 如何用terminal输入参数
May 25 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
解析如何去掉CodeIgniter URL中的index.php
2013/06/25 PHP
php 批量添加多行文本框textarea一行一个
2014/06/03 PHP
php操作redis中的hash和zset类型数据的方法和代码例子
2014/07/05 PHP
PHP中通过fopen()函数访问远程文件示例
2014/11/18 PHP
Zend Framework基本页面布局分析
2016/03/19 PHP
PHP实现git部署的方法教程
2017/12/19 PHP
jquery设置元素的readonly和disabled的写法
2013/09/22 Javascript
浅析jQuery(function(){})与(function(){})(jQuery)之间的区别
2014/01/09 Javascript
jquery append()方法与html()方法的区别及使用介绍
2014/08/01 Javascript
javascript作用域链(Scope Chain)用法实例解析
2015/11/30 Javascript
webpack常用配置项配置文件介绍
2016/11/07 Javascript
浅谈html转义及防止javascript注入攻击的方法
2016/12/04 Javascript
js 输入框 正则表达式(菜鸟必看教程)
2017/02/19 Javascript
JS常用正则表达式总结【经典】
2017/05/12 Javascript
使用InstantClick.js让页面提前加载200ms
2017/09/12 Javascript
详解vue中点击空白处隐藏div的实现(用指令实现)
2018/04/19 Javascript
vee-validate vue 2.0自定义表单验证的实例
2018/08/28 Javascript
使用NestJS开发Node.js应用的方法
2018/12/03 Javascript
VUE+node(express)实现前后端分离
2019/10/13 Javascript
javascript实现视频弹幕效果(两个版本)
2019/11/28 Javascript
[50:29]2014 DOTA2华西杯精英邀请赛 5 24 DK VS iG
2014/05/26 DOTA
在Python的Flask框架中构建Web表单的教程
2016/06/04 Python
pytorch  网络参数 weight bias 初始化详解
2020/06/24 Python
Python如何实现远程方法调用
2020/08/07 Python
解决import tensorflow导致jupyter内核死亡的问题
2021/02/06 Python
纯CSS实现菜单、导航栏的3D翻转动画效果
2014/04/23 HTML / CSS
Otel.com:折扣酒店预订
2017/08/24 全球购物
亚洲颇具影响力的男性在线购物零售商:His
2019/11/24 全球购物
腾讯技术类校园招聘笔试试题
2014/05/06 面试题
后勤人员岗位职责
2013/12/17 职场文书
公务员政审单位鉴定材料
2014/05/16 职场文书
乔丹名人堂演讲稿
2014/05/24 职场文书
社区班子个人对照检查材料思想汇报
2014/10/07 职场文书
2014年医生工作总结
2014/11/21 职场文书
2015年统计员个人工作总结
2015/07/23 职场文书
工作一年自我鉴定
2019/06/20 职场文书