使用python的selenium库实现突破百度云文件上传个数的限制

# -*- coding: utf-8 -*-
from selenium.webdriver.common.action_chains import ActionChains 
from selenium import webdriver
import time
import os
paths=[]
path=r"C:\Users\XXXXX\Desktop\2017"
def open_the_baidu():
    html="http://pan.baidu.com/"
    driver=webdriver.Chrome()
    driver.implicitly_wait(10)
    driver.get(html)
    name="xxxxxxx"
    password="xxxxxxxx"
    #模拟鼠标左键点击切换到账号密码登陆页面,因为首页是二维码......
    left_click=driver.find_element_by_xpath("//*[@id=\"login-middle\"]/div/div[1]/div[2]/a")
    ActionChains(driver).click(left_click).perform()
    driver.find_element_by_xpath("//*[@id=\"TANGRAM__PSP_4__userName\"]").clear()
    driver.find_element_by_xpath("//*[@id=\"TANGRAM__PSP_4__password\"]").clear()
    driver.find_element_by_xpath("//*[@id=\"TANGRAM__PSP_4__userName\"]").send_keys(name)
    driver.find_element_by_xpath("//*[@id=\"TANGRAM__PSP_4__password\"]").send_keys(password)
    driver.find_element_by_xpath("//*[@id=\"TANGRAM__PSP_4__submit\"]").click()
    #######把百度云对应的文件夹对应的url打开########
    driver.get("http://pan.baidu.com/disk/home?errno=0&errmsg=AuthXXXXXXX")
    i=0
    while(len(paths)>0):
        i=i+1
        if(i==400):
            ##一开始用driver.close(),结果浏览器关了,但geckodriver.exe没关
            driver.quit()
            return
        time.sleep(1)
        #对于<input title="点击选择文件" id="h5Input0">这种input型上传方式直接xpath+send_keys()
        driver.find_element_by_xpath("//*[@id=\"h5Input0\"]").send_keys(paths.pop())
#########把所有文件的路径压入栈##############
def files_traverse(path):
#os.walk这个函数会遍历本文件还有子文件中的所有文件夹还有文件
#parent是文件所在文件夹的路径,dirnames是文件夹迭代器,filenames是文件迭代器
    global driver
    for parent,dirnames,filenames in os.walk(path):    
        #三个参数:分别返回1.该目录路径 2.所有文件夹名字(不含路径) 3.所有文件名字(不含路径)
        for filename in filenames:
        #filename输出文件夹还有子文件夹中所有文件信息
            paths.append(parent+"\\"+filename)
            print("File name is:"+parent+"\\"+filename) #输出文件路径信息
            print("****************************************")
#########主函数#################
files_traverse(path)
while(len(paths)>0):
    time.sleep(1)
    open_the_baidu()

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容