Python實現對百度雲的檔案上傳(例項講解)

Python實現對百度雲的檔案上傳(例項講解)

環境準備

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。

1、點選“賬號密碼登入”,獲取其原始檔

效果圖如下:

點選右鍵,複製Xpath路徑:/html/body/div[1]/div[3]/div[6]/div/div[6]/div[2]/a

登入按鈕和檔案上傳同上,獲取其相應的Xpath路徑

程式碼:


#選擇賬號密碼登入
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()

點選上傳按鈕,彈出檔案對話方塊

三、AutoIT編寫指令碼實現上傳檔案

webdriver無法對檔案直接進行操作,所以需要藉助AutoIT來實現檔案上傳

AutoIT下載地址:https://www.autoitscript.com/site

安裝AutoIt之後,開啟AutoIt Window Info(x64)

4、獲取檔案上傳視窗的控制元件資訊:

開啟autoit工具之後,用滑鼠將Finder Tool的圖示拖到要識別的控制元件上

獲取文字框的控制元件資訊:

獲取“開啟”按鈕的控制元件資訊:

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


4. 使用compile script to exe將上述AutoIt指令碼編譯為exe檔案供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中的FTP通訊模組ftplib的用法整理Python django實現檔案上傳python django快速實現檔案上傳Python中selenium實現檔案上傳所有方法整理總結python selenium autoit實現檔案上傳功能python實現支援目錄FTP上傳下載檔案的方法python實現的簡單FTP上傳下載檔案例項python實現從ftp伺服器下載檔案的方法python連線遠端ftp伺服器並列出目錄下檔案的方法Python基於FTP模組實現ftp檔案上傳操作示例