批量保存云盘链接的demo

写在前面的声明:

  作为一个正在自学爬虫的小白,用爬虫爬了八千本书的云盘链接,然后就想把这写链接的资源都转存到自己的云盘里,以防某一天资源失效。本来想在网上找个能够批量保存的软件,哪知道找到几个都不能用,用手动保存肯定是不现实的。随后想到才学的selenium能够模拟浏览器的操作,就像自己写段自动保存的代码。经过三四个小时的奋战,有了以下的结果。我知道自己这个东西写得很烂很烂,但这确实是我学习路上用已有的知识独立思考独立操作出的成果,毕竟它解决了我实际遇到的问题,这完全符合我当初自学编程的初衷,心里还是很高兴的。现在把代码贴出来,让各位大神老师见笑了,也是为了如果有哪位大神有类似的更好的工具,希望能够分享一下。

from selenium import webdriver
import time

with open("books.txt") as f:
    links = f.readlines() # 从文件中读取资源链接和密码
    browser = webdriver.Chrome() # 实例一个浏览器对象
    expired = [] # 创建一个存储过期链接的列表
    for link in links: # 遍历
        url = link.split("----")[0] # 以----为分隔符,前半段为地址,后半段为密码
        pw = link.split("----")[1]
        browser.get(url) # 请求资源链接
        time.sleep(2)
        if browser.page_source.find("zvbpPbMk") != -1: # 判断链接是否有效
            browser.find_element_by_id("zvbpPbMk").send_keys(pw) # 输入密码
            browser.find_element_by_class_name("text").click() # 点击确定
            time.sleep(2)
            if browser.page_source.find("user-name") != -1:
                print("正在保存  " + browser.find_element_by_xpath("//h2").text)
                browser.find_element_by_class_name("zbyDdwb").click() # 点选文件
                browser.find_element_by_xpath('//a[@class="g-button g-button-blue"]/span[@class="g-button-right"]/span[@class="text"]').click() # 点击保存到网盘按钮
                time.sleep(3)
                browser.find_element_by_xpath("//div[@class='dialog-footer g-clearfix']/a[2]").click() # 点击确定
                time.sleep(2)
                print("保存成功  " + browser.find_element_by_xpath("//h2").text)
            else:
                print("正在保存  " + browser.find_element_by_xpath("//h2").text)
                browser.find_element_by_xpath("//dd[@class='CDaavKb']/a[1]").click() # 点击登陆按钮
                time.sleep(3)
                browser.find_element_by_xpath("//div[@class='tang-pass-footerBar']/p[2]").click() # 点击账号密码登陆按钮
                time.sleep(3)
                browser.find_element_by_name("userName").send_keys("15580502400") # 输入账号
                browser.find_element_by_name("password").send_keys("xvv19890224") # 输入密码
                browser.find_element_by_id("TANGRAM__PSP_10__submit").click() # 点击确定
                time.sleep(3)
                browser.find_element_by_class_name("zbyDdwb").click() # 点选文件
                browser.find_element_by_xpath('//a[@class="g-button g-button-blue"]/span[@class="g-button-right"]/span[@class="text"]').click() # 点击保存到网盘按钮
                time.sleep(3)
                browser.find_element_by_xpath("//div[@class='dialog-footer g-clearfix']/a[2]").click() # 点击确定
                time.sleep(2)
                print("保存成功  " + browser.find_element_by_xpath("//h2").text)
        else:
            # 把过期的链接添加到列表
            expired.append(url)
    # 打印过期的链接列表
    print(expired)
原文地址:https://www.cnblogs.com/shawone/p/10295381.html