写在前面的声明:
作为一个正在自学爬虫的小白,用爬虫爬了八千本书的云盘链接,然后就想把这写链接的资源都转存到自己的云盘里,以防某一天资源失效。本来想在网上找个能够批量保存的软件,哪知道找到几个都不能用,用手动保存肯定是不现实的。随后想到才学的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)