摘要:背景實現需求批量下載聯想某型號的全部驅動程序。最終實現結果是我們希望根據網頁的列表進行重命名和重新歸檔到文件夾,但是我們會發現如下幾個問題下載過來的文件名無法控制。
背景
實現需求:批量下載聯想某型號的全部驅動程序。
一般在做網絡爬蟲的時候,都是保存網頁信息為主,或者下載單個文件。當涉及到多文件批量下載的時候,由于下載所需時間不定,下載的文件名不定,所以有一定的困難。
思路 參數配置在涉及下載的時候,需要先對chromedriver進行參數配置,設定默認下載目錄:
global base_path profile = { "download.default_directory": base_path } chrome_options = webdriver.ChromeOptions() chrome_options.add_experimental_option("prefs", profile) driver = webdriver.Chrome(executable_path="../common/chromedriver", options=chrome_options) driver.implicitly_wait(10)頁面分析
聯想官網上每個型號的驅動下載頁面如上圖所示,雖然前面有一個登陸的遮罩,但是實際上并不影響點擊。需要注意的是:
驅動列表,需要點擊才可以顯示具體的下載項目表格,否則可以找到對應元素但無法獲取正確的信息
driver_list.find_element_by_class_name("download-center_list_t_icon").click()
每個下載列表的表頭建議做跳過處理
if sub_list.find_element_by_class_name("download-center_usblist_td01").text == "驅動名稱": continue下載處理
在頁面中,找到“普通下載”的元素,點擊即可下載。最終實現結果是我們希望根據網頁的列表進行重命名和重新歸檔到文件夾,但是我們會發現如下幾個問題:
下載過來的文件名無法控制。
依次下載的話,我們無法確認需要下載多久。并行下載的話,無法有效的區分重命名。
在網上找了很久,也沒找到在下載時直接重命名的方法,所以最終選擇依次下載,當每次下載完成后進行重命名和歸檔,思路如下:
對每個驅動目錄,先新建一個文件夾,如:主板
點擊下載后開始下載文件
通過os模塊,找到下載目錄中所有文件,并按創建時間排序,找到最新創建的文件
由于未完成的文件后綴為.crdownload(chrome),那么根據后綴來判斷是否已完成下載,未完成的話繼續等待
待下載完成,將文件重命名并剪切到開始建立的歸檔目錄。這里需要注意的是,有些文件名中不能存在/符號,否則會導致重命名失敗,需要做一下替換。
在后期測試的時候,發現還有幾個坑需要注意:
在查找最新創建的文件時,需要注意.DS_Store文件的處理。(Mac系統,Windows則需要考慮thumbs.db)
需要判斷一下最新創建的文件是否為文件夾,可以通過filter函數來處理
最新文件的排序查找實現如下:
def sort_file(): # 排序文件 dir_link = base_path dir_lists = list(filter(check_file, os.listdir(dir_link))) if len(dir_lists) == 0: return "" else: dir_lists.sort(key=lambda fn: os.path.getmtime(dir_link + os.sep + fn)) return os.path.join(base_path, dir_lists[-1]) def check_file(filename): # 忽略系統文件 if filename == ".DS_Store" or filename == "thumbs.db": return False global base_path # 排除文件夾 return os.path.isfile(os.path.join(base_path, filename))總結
最終實現效果如下:
完整代碼參考:https://github.com/keejo125/w...
如果大家有更好的方法,也歡迎分享。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/43344.html
摘要:自動化這一專欄,將以目的為導向,以簡化或自動化完成工作任務為目標,將運用于實踐中,解決實際問題,以激發讀者對這門腳本語言的學習興趣。 Python 自動化 這一專欄...
小編寫這篇文章的一個主要目的,主要是來給大家做一個解答,解答的內容是Python+Selenium,具體的一個內容解釋是什么呢?比如,我們可以實現Geoserver批量發布Mongo矢量數據,具體的一個內容,下面就給大家詳細解答下。 首先,聲明一下,這里我完成的腳步屬于半自動化的,我戲稱它為有監督的半自動化腳本。具體原因后面會詳細說明?! ∫?、安裝Selenium和ChromeDriver ...
摘要:一什么是是一個基于瀏覽器的自動化工具,她提供了一種跨平臺跨瀏覽器的端到端的自動化解決方案。模塊主要用來記錄用例執行情況,以便于高效的調查用例失敗信息以及追蹤用例執行情況。測試用例倉庫用例倉庫主要用來組織自動化測試用例。 一、什么是Selenium? Selenium是一個基于瀏覽器的自動化工具,她提供了一種跨平臺、跨瀏覽器的端到端的web自動化解決方案。Selenium主要包括三部分:...
小編寫這篇文章的主要目的,主要是講解一些關于python的事情,比如需要對圖片進行批量壓縮,壓縮的方法還是比較的多的,那么,為了提高效率,怎么進行批量壓縮呢?下面就給大家詳細解答下?! ∏把浴 ∽罱谘芯吭趺磳D片資源進行無損壓縮,網上也找了一些資料??偠灾斋@不少,所以想對最近的學習做個總結?! o損壓縮其實是相對而言的,目的是為了減小圖片資源的內存大小但又不影響圖片的顯示質量。下面我將...
摘要:且本小白也親身經歷了整個從小白到爬蟲初入門的過程,因此就斗膽在上開一個欄目,以我的圖片爬蟲全實現過程為例,以期用更簡單清晰詳盡的方式來幫助更多小白應對更大多數的爬蟲實際問題。 前言: 一個月前,博主在學過python(一年前)、會一點網絡(能按F12)的情況下,憑著熱血和興趣,開始了pyth...
閱讀 2858·2021-07-30 15:30
閱讀 553·2019-08-30 15:55
閱讀 1621·2019-08-26 17:04
閱讀 633·2019-08-26 11:36
閱讀 2064·2019-08-26 10:58
閱讀 3549·2019-08-23 14:34
閱讀 1558·2019-08-22 18:48
閱讀 2522·2019-08-21 17:51