摘要:自動化這一專欄,將以目的為導(dǎo)向,以簡化或自動化完成工作任務(wù)為目標(biāo),將運(yùn)用于實(shí)踐中,解決實(shí)際問題,以激發(fā)讀者對這門腳本語言的學(xué)習(xí)興趣。
Python 自動化 這一專欄,將以目的為導(dǎo)向,以簡化或自動化完成工作任務(wù)為目標(biāo),將Python運(yùn)用于實(shí)踐中,解決實(shí)際問題,以激發(fā)讀者對這門腳本語言的學(xué)習(xí)興趣。在開始Python自動化相關(guān)實(shí)戰(zhàn)的學(xué)習(xí)前,建議對 Python基礎(chǔ) 以及 Python 爬蟲 的相關(guān)知識展開一定的學(xué)習(xí)與了解。對此博客已開設(shè)相關(guān)專欄,可點(diǎn)擊直達(dá)。
往期內(nèi)容提要:
“文件下載”無論是在網(wǎng)絡(luò)爬蟲,還是自動化領(lǐng)域,都是最為常見的需求。此前作者曾在 《教務(wù)管理系統(tǒng):成績、課表查詢接口設(shè)計及搶課、監(jiān)控功能實(shí)現(xiàn)》 一文中,在圖形驗(yàn)證碼的識別中首先就介紹了進(jìn)行了實(shí)戰(zhàn)展示。在這一篇文章中,將對文件下載作出一個相對系統(tǒng)的概括與總結(jié)。
一般而言,文件下載可以通過兩個方式實(shí)現(xiàn)。其一, 發(fā)包收包解決;其二,selenium解決。
針對第一種方法,曾在 《教務(wù)管理系統(tǒng):成績、課表查詢接口設(shè)計及搶課、監(jiān)控功能實(shí)現(xiàn)》 一文中予以過展示。基本邏輯在于構(gòu)造get請求,發(fā)包后儲存返回結(jié)果。
url = "手動打碼/Image.aspx"def get_pic(): # 驗(yàn)證碼請求頭 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方式解放雙手,實(shí)現(xiàn)文件批量下載在實(shí)戰(zhàn)中也是較為常見的方法。接下來將以網(wǎng)課夢魘——“超星學(xué)習(xí)通”課程音頻下載為例,介紹如何利用selenium實(shí)現(xiàn)網(wǎng)課文件批量下載。
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
目標(biāo)站點(diǎn)的訪問方法可參見往期Python自動化文章 《【Python自動化】登陸與識別》,而文章舉例站點(diǎn)“超星學(xué)習(xí)通”的URL作為教師分享鏈接,無需登陸驗(yàn)證。URL格式如下:
http://apps.wh.chaoxing.com/screen/vclass/view/xxxxx-xxxxx-xxxxx-xxxxx-xxxxxxxxxx
因此,僅需要簡單調(diào)用webdriver,實(shí)現(xiàn)目標(biāo)站點(diǎn)的訪問:
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)
首先通過開發(fā)者模式定位音頻元素,在能夠獲取單頁音頻文件直鏈的基礎(chǔ)上,采用遍歷的方式獲取全站文件直鏈。
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)))
其中存儲文件的命名方式多樣,這里選擇時間戳的方式為音頻排序:
至此,本文也就進(jìn)入尾聲了。本文的撰寫來自于開發(fā)中的一點(diǎn)心得體會,主要目的在于通過實(shí)踐提高讀者Python學(xué)習(xí)興趣,解決實(shí)際問題。供對這一領(lǐng)域感興趣的讀者以參考借鑒。希望本文能夠起到拋磚引玉之效,也歡迎大家的批評交流。
如果您有任何疑問或者好的建議,期待你的留言、評論與關(guān)注!
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/121423.html
摘要:時間永遠(yuǎn)都過得那么快,一晃從年注冊,到現(xiàn)在已經(jīng)過去了年那些被我藏在收藏夾吃灰的文章,已經(jīng)太多了,是時候把他們整理一下了。那是因?yàn)槭詹貖A太亂,橡皮擦給設(shè)置私密了,不收拾不好看呀。 ...
摘要:耗時代碼運(yùn)行到這句之后觸發(fā)隱式等待,在輪詢檢查后仍然沒有定位到元素,拋出異常。耗時值得一提的是,對于定位不到元素的時候,從耗時方面隱式等待和強(qiáng)制等待沒什么區(qū)別。 ...
小編寫這篇文章的一個主要目的,主要是來給大家做一個解答,解答的內(nèi)容是Python+Selenium,具體的一個內(nèi)容解釋是什么呢?比如,我們可以實(shí)現(xiàn)Geoserver批量發(fā)布Mongo矢量數(shù)據(jù),具體的一個內(nèi)容,下面就給大家詳細(xì)解答下。 首先,聲明一下,這里我完成的腳步屬于半自動化的,我戲稱它為有監(jiān)督的半自動化腳本。具體原因后面會詳細(xì)說明。 一、安裝Selenium和ChromeDriver ...
摘要:且本小白也親身經(jīng)歷了整個從小白到爬蟲初入門的過程,因此就斗膽在上開一個欄目,以我的圖片爬蟲全實(shí)現(xiàn)過程為例,以期用更簡單清晰詳盡的方式來幫助更多小白應(yīng)對更大多數(shù)的爬蟲實(shí)際問題。 前言: 一個月前,博主在學(xué)過python(一年前)、會一點(diǎn)網(wǎng)絡(luò)(能按F12)的情況下,憑著熱血和興趣,開始了pyth...
摘要:在這之前,還是有必要對一些概念超輕量級反爬蟲方案后端掘金前言爬蟲和反爬蟲日益成為每家公司的標(biāo)配系統(tǒng)。 爬蟲修煉之道——從網(wǎng)頁中提取結(jié)構(gòu)化數(shù)據(jù)并保存(以爬取糗百文本板塊所有糗事為例) - 后端 - 掘金歡迎大家關(guān)注我的專題:爬蟲修煉之道 上篇 爬蟲修煉之道——編寫一個爬取多頁面的網(wǎng)絡(luò)爬蟲主要講解了如何使用python編寫一個可以下載多頁面的爬蟲,如何將相對URL轉(zhuǎn)為絕對URL,如何限速,...
閱讀 2263·2021-09-28 09:36
閱讀 1996·2021-09-22 15:14
閱讀 3623·2019-08-30 12:47
閱讀 3034·2019-08-30 12:44
閱讀 1226·2019-08-29 17:06
閱讀 536·2019-08-29 14:12
閱讀 973·2019-08-29 14:01
閱讀 2581·2019-08-29 12:17