摘要:自動化這一專欄,將以目的為導向,以簡化或自動化完成工作任務為目標,將運用于實踐中,解決實際問題,以激發讀者對這門腳本語言的學習興趣。
Python 自動化 這一專欄,將以目的為導向,以簡化或自動化完成工作任務為目標,將Python運用于實踐中,解決實際問題,以激發讀者對這門腳本語言的學習興趣。在開始Python自動化相關實戰的學習前,建議對 Python基礎 以及 Python 爬蟲 的相關知識展開一定的學習與了解。對此博客已開設相關專欄,可點擊直達。
往期內容提要:
“文件下載”無論是在網絡爬蟲,還是自動化領域,都是最為常見的需求。此前作者曾在 《教務管理系統:成績、課表查詢接口設計及搶課、監控功能實現》 一文中,在圖形驗證碼的識別中首先就介紹了進行了實戰展示。在這一篇文章中,將對文件下載作出一個相對系統的概括與總結。
一般而言,文件下載可以通過兩個方式實現。其一, 發包收包解決;其二,selenium解決。
針對第一種方法,曾在 《教務管理系統:成績、課表查詢接口設計及搶課、監控功能實現》 一文中予以過展示。基本邏輯在于構造get請求,發包后儲存返回結果。
url = "手動打碼/Image.aspx"def get_pic(): # 驗證碼請求頭 headers = { "User-Agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:74.0) Gecko/20100101 Firefox/74.0", "cookie": "varPartNewsManage.aspx=10" } re_pic = requests.get(url, headers=headers) response = re_pic.content file = "C://Users//john//Desktop//1//" + ".png" playFile = open(file, "wb") playFile.write(response) playFile.close()
此外,通過selenium方式解放雙手,實現文件批量下載在實戰中也是較為常見的方法。接下來將以網課夢魘——“超星學習通”課程音頻下載為例,介紹如何利用selenium實現網課文件批量下載。
from selenium.webdriver.common.keys import Keysfrom selenium.webdriver.support.ui import WebDriverWaitfrom selenium.webdriver.common.by import Byfrom selenium.webdriver.support import expected_conditionsfrom selenium.common.exceptions import TimeoutException, WebDriverExceptionfrom datetime import datetimefrom time import sleepfrom selenium.webdriver.support.wait import WebDriverWaitfrom selenium.webdriver.support import expected_conditions as ECfrom selenium.webdriver.common.by import By
目標站點的訪問方法可參見往期Python自動化文章 《【Python自動化】登陸與識別》,而文章舉例站點“超星學習通”的URL作為教師分享鏈接,無需登陸驗證。URL格式如下:
http://apps.wh.chaoxing.com/screen/vclass/view/xxxxx-xxxxx-xxxxx-xxxxx-xxxxxxxxxx
因此,僅需要簡單調用webdriver,實現目標站點的訪問:
chrome_options = Options()# chrome_options.add_argument("--headless")# chrome_options.add_argument("--disable-gpu")driver = webdriver.Chrome()browser = webdriver.Chrome(chrome_options=chrome_options)url_list = [ "http://apps.wh.chaoxing.com/screen/vclass/view/xxxxx-xxxxx-xxxxx-xxxxx-xxxxxxxxxx1", "http://apps.wh.chaoxing.com/screen/vclass/view/xxxxx-xxxxx-xxxxx-xxxxx-xxxxxxxxxx2", "http://apps.wh.chaoxing.com/screen/vclass/view/xxxxx-xxxxx-xxxxx-xxxxx-xxxxxxxxxx3"]browser.get(url_list[0])# browser.maximize_window()wait = WebDriverWait(browser,10,0.5)
首先通過開發者模式定位音頻元素,在能夠獲取單頁音頻文件直鏈的基礎上,采用遍歷的方式獲取全站文件直鏈。
link = WebDriverWait(browser, 10).until(lambda x: x.find_elements_by_xpath("http://audio"))list=[]list_count = 0for i in link: list.append(i.get_attribute("src"))#print(list)#print(type(list))browser.quit()
z = []for i in list: time = datetime.now().strftime("%H-%M-%S----") data = requests.get(i, stream=True) z.append(time) with open("C://Users//john//Desktop//1//" + time + i[-8:-5] + ".mp3", "wb") as f: for j in data.iter_content(chunk_size=512): f.write(j) print(i + "寫出完畢!")print("一共 {} 個,下載完成 {} 個 ".format(len(list),len(z)))
其中存儲文件的命名方式多樣,這里選擇時間戳的方式為音頻排序:
至此,本文也就進入尾聲了。本文的撰寫來自于開發中的一點心得體會,主要目的在于通過實踐提高讀者Python學習興趣,解決實際問題。供對這一領域感興趣的讀者以參考借鑒。希望本文能夠起到拋磚引玉之效,也歡迎大家的批評交流。
如果您有任何疑問或者好的建議,期待你的留言、評論與關注!
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/121423.html
摘要:時間永遠都過得那么快,一晃從年注冊,到現在已經過去了年那些被我藏在收藏夾吃灰的文章,已經太多了,是時候把他們整理一下了。那是因為收藏夾太亂,橡皮擦給設置私密了,不收拾不好看呀。 ...
摘要:耗時代碼運行到這句之后觸發隱式等待,在輪詢檢查后仍然沒有定位到元素,拋出異常。耗時值得一提的是,對于定位不到元素的時候,從耗時方面隱式等待和強制等待沒什么區別。 ...
小編寫這篇文章的一個主要目的,主要是來給大家做一個解答,解答的內容是Python+Selenium,具體的一個內容解釋是什么呢?比如,我們可以實現Geoserver批量發布Mongo矢量數據,具體的一個內容,下面就給大家詳細解答下。 首先,聲明一下,這里我完成的腳步屬于半自動化的,我戲稱它為有監督的半自動化腳本。具體原因后面會詳細說明。 一、安裝Selenium和ChromeDriver ...
摘要:且本小白也親身經歷了整個從小白到爬蟲初入門的過程,因此就斗膽在上開一個欄目,以我的圖片爬蟲全實現過程為例,以期用更簡單清晰詳盡的方式來幫助更多小白應對更大多數的爬蟲實際問題。 前言: 一個月前,博主在學過python(一年前)、會一點網絡(能按F12)的情況下,憑著熱血和興趣,開始了pyth...
摘要:在這之前,還是有必要對一些概念超輕量級反爬蟲方案后端掘金前言爬蟲和反爬蟲日益成為每家公司的標配系統。 爬蟲修煉之道——從網頁中提取結構化數據并保存(以爬取糗百文本板塊所有糗事為例) - 后端 - 掘金歡迎大家關注我的專題:爬蟲修煉之道 上篇 爬蟲修煉之道——編寫一個爬取多頁面的網絡爬蟲主要講解了如何使用python編寫一個可以下載多頁面的爬蟲,如何將相對URL轉為絕對URL,如何限速,...
閱讀 2277·2021-09-28 09:36
閱讀 2056·2021-09-22 15:14
閱讀 3638·2019-08-30 12:47
閱讀 3045·2019-08-30 12:44
閱讀 1243·2019-08-29 17:06
閱讀 546·2019-08-29 14:12
閱讀 986·2019-08-29 14:01
閱讀 2590·2019-08-29 12:17