寫在前面的聲明: 作為一個正在自學爬蟲的小白,用爬蟲爬了八千本書的雲盤鏈接,然後就想把這寫鏈接的資源都轉存到自己的雲盤裡,以防某一天資源失效。本來想在網上找個能夠批量保存的軟體,哪知道找到幾個都不能用,用手動保存肯定是不現實的。隨後想到才學的selenium能夠模擬瀏覽器的操作,就像自己寫段自動保存 ...
寫在前面的聲明:
作為一個正在自學爬蟲的小白,用爬蟲爬了八千本書的雲盤鏈接,然後就想把這寫鏈接的資源都轉存到自己的雲盤裡,以防某一天資源失效。本來想在網上找個能夠批量保存的軟體,哪知道找到幾個都不能用,用手動保存肯定是不現實的。隨後想到才學的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)