吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 5058|回复: 6
收起左侧

[Python 转载] Python Selenium 百度云分享链接资源 批量保存

  [复制链接]
helian147 发表于 2019-11-21 15:43
本帖最后由 helian147 于 2019-11-21 15:46 编辑

参考链接  https://blog.csdn.net/u010730731/article/details/83594103 (xls格式)
找了个docx的批量百度云链接,转存到自己的网盘。
修改的地方:
1、百度云修改过了:driver.find_element_by_id("mwxxPOD")
2、从docx读取
3、driver = webdriver.Chrome(path),path填入自己的chromedriver地址,注意是文件地址,不是目录地址。且与你安装的chrome版本匹配的webdriver,并添加到环境变量中。
4、登陆时目前有滑块验证,代码中没有,自己手动拉一下,还没搞定。
chroemdriver下载:
https://chromedriver.storage.googleapis.com/index.html

[Python] 纯文本查看 复制代码
# -*- coding: UTF-8 -*-
from docx import Document #安装 pip install python-docx
import re
from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException
import time

# 凡是出现sleep的,都是因为网络等原因加载过慢,需要等一等

# 登录云盘
def login(driver,username,password):
    orgin_url = 'https://pan.baidu.com/'
    driver.get(orgin_url)
    try:
        time.sleep(5)
        elem_static = driver.find_element_by_id("TANGRAM__PSP_4__footerULoginBtn")
        elem_static.click()
        time.sleep(0.5)
        elem_username = driver.find_element_by_id("TANGRAM__PSP_4__userName")
        elem_username.clear()
        elem_username.send_keys(username)
        elem_userpas = driver.find_element_by_id("TANGRAM__PSP_4__password")
        elem_userpas.clear()
        elem_userpas.send_keys(password)
        elem_submit = driver.find_element_by_id("TANGRAM__PSP_4__submit")
        elem_submit.click()
        time.sleep(5)
    except NoSuchElementException:
        pass



# 将加密分享的文件保存到自己云盘的目录下
def extract(driver,srcurl,srcpwd):
    driver.get(srcurl)
    try:
        getpwd = driver.find_element_by_id("mwxxPOD")  #("esDEV5")
        getpwd.send_keys(srcpwd)
        getButton = driver.find_element_by_link_text("提取文件")
        getButton.click()
        time.sleep(10)
        # 目前有两种情况
        # 一:分享文件是一压缩包
        # 二:分享的是一路径
        try:# 全选(情况二)
            selectall = driver.find_element_by_class_name("zbyDdwb")
            selectall.click()
        except NoSuchElementException:
            file_name = "no_zbyDdwb.png"
            driver.save_screenshot(file_name)
            driver.get_screenshot_as_file(file_name)
            pass
        savetodisk = driver.find_element_by_link_text("保存到网盘")
        savetodisk.click()
        time.sleep(5)
        # AA 为指定的自己网盘保存路径
        selectdir = driver.find_element_by_xpath("//span[@node-path='/AA']")
        selectdir.click()
        enter = driver.find_element_by_link_text("确定")
        enter.click()
        time.sleep(2)
    except NoSuchElementException:
        file_name = "no_such_element.png"
        driver.get_screenshot_as_file(file_name)
        pass


def read_docx(path):
    fulltext=[]
    list1=[]
    listUrl=[]
    listpwd=[]
    #生成word对象,并指向word文件
    doc=Document(path)
    #读取对象的全部内容,不包括图片和表格
    paras=doc.paragraphs
    #将每行数据存入列表
    for p in paras:
        fulltext.append(p.text)
    
    for i, element in enumerate(fulltext):
        if element.find("https:")!=-1:
            list1.append(i)
    for j in range(len(list1)):
        k =list1[j]
        link = re.findall(r'.*(https.*)',fulltext[k].replace(u"\xa0",u"").replace(" ",""))
        listUrl.append(link[0])
        pwd = re.findall('[a-zA-Z0-9]{4}',fulltext[k+1])
        listpwd.append(pwd[0])
    #print(len(listUrl),len(listpwd))
    return listUrl,listpwd


# 调用执行
def doWork():
    # 存放链接的文件
    path=r'文件地址***.docx'
    listUrl,listpwd= read_docx(path)
    driver = webdriver.Chrome(executable_path='D:\Program10\python37\chromedriver\chromedriver')
    login(driver,"网盘帐户名***","密码***")
    for index in range(len(listUrl)):
        srcurl = listUrl[index]
        srcpwd = listpwd[index]
        extract(driver,srcurl,srcpwd)
    driver.quit()


if __name__ == '__main__':
    doWork()

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
岚瑟 + 1 + 1 用心讨论,共获提升!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

kk1212 发表于 2019-11-21 15:49
Python 可真是啥都能搞
 楼主| helian147 发表于 2019-11-21 15:51
头像被屏蔽
王星星 发表于 2019-11-21 15:53
Hatsune_miku 发表于 2019-11-21 16:03
登录部分楼主可以参考我的代码思路,手写轨迹,一个容易过的点,一般登陆都会在60s内完成。
[Python] 纯文本查看 复制代码
from selenium.webdriver import ActionChains
from selenium import webdriver
import time

start_time = time.time()
options = webdriver.ChromeOptions()
options.add_argument("log-level=3")
driver = webdriver.Chrome(options=options)

driver.get('https://pan.baidu.com')
time.sleep(2)
driver.find_element_by_xpath('//*[@id="TANGRAM__PSP_4__footerULoginBtn"]').click()
driver.find_element_by_xpath('//*[@id="TANGRAM__PSP_4__userName"]').send_keys('')
driver.find_element_by_xpath('//*[@id="TANGRAM__PSP_4__password"]').send_keys('')
driver.find_element_by_xpath('//*[@id="TANGRAM__PSP_4__submit"]').click()
time.sleep(1.5)
slid_ing = driver.find_element_by_class_name('vcode-spin-button')
while True:
    ActionChains(driver).click_and_hold(on_element=slid_ing).perform()
    time.sleep(0.2)
    for track in [0,0,0,1,1,1,1,2,2,2,3,3,3,3,3,4,4,4,4]:
        ActionChains(driver).move_by_offset(xoffset=track, yoffset=0).perform()
    try:
        ActionChains(driver).release(on_element=slid_ing).perform()
    except:
        break

time.sleep(1.5)
cookies = driver.get_cookies()
print(cookies)
end_time = time.time()
print(f'耗时:{int(end_time-start_time)}s')
driver.quit()

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
helian147 + 1 + 1 的确好使啊

查看全部评分

cj13888 发表于 2019-11-21 16:04
学习借鉴一下,谢谢分享
 楼主| helian147 发表于 2019-11-21 16:10
Hatsune_miku 发表于 2019-11-21 16:03
登录部分楼主可以参考我的代码思路,手写轨迹,一个容易过的点,一般登陆都会在60s内完成。
[mw_shl_code= ...

谢谢,我试试
mumubuduo 发表于 2019-12-18 21:42
打开保存网盘过一段时间就会出验证码
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-16 19:53

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表