Python構建自動在線刷視頻的實現
前言
學習Python的初衷是因為它的實踐的便捷性,幾乎計算機上能完成的各種操作都能在Python上找到解決途徑。平時工作需要在線學習。而在線學習的復雜性經常讓人抓狂。費時費力且效率很低,而讓Python這個不知疲倦、不怕麻煩與辛苦、不會抱怨的助手去搞定主人想做的一切。自己泡杯咖啡愜意的學習才是我輩的終極目標。
一、完成功能的條件
1.必備條件
安裝Python環境(https://www.python.org/)
安裝Selenium安裝
使用的對應版本瀏覽器驅動(webdriver)
2.非必備條件
安裝PyCharm集成環境
二、解決Python軟件的坑
1.安裝Python
打勾的地方一定要加上,默認方式是不選的,這將影響到命令行運行python相關命令是否能正確執行。
2.安裝Selenium
這個安裝其實真的簡單,沒必要再去糾結怎麼下載,怎麼安裝瞭。直接在操作系統裡進入命令行界面,執行一下:
pip install selenium
3.下載並安裝Chrome驅動
這是真真正正的坑,有的人使用時以為自己已經安裝過Chrome瀏覽器就以為直接可以用Python驅動瞭,其實不然,還得有Chrome對應版本的驅動才行
下載網址:http://npm.taobao.org/mirrors/chromedriver
是不是一下閃瞎瞭你的眼睛,這麼多,那個才適合我呢?
你需要首先看一下你的Chrome版本哦,對應版本的驅動才能用的。
趕緊在瀏覽器中輸入下面的代碼看一下版本吧!
chrome://version/
相信大傢的版本跟我的都不一樣,我的是32位版本哦!為什麼不用64位版本呢?網上能下的大部分都是64位版的呢。你在Chrome的驅動裡找一找,驅動for Win基本都是32哦。所以還是趕緊換掉你的瀏覽器吧。這裡正確的做法是在網上找32位的Chrome,然後對應著看一下是否有對應的驅動,如果兩個都有,那就趕緊下載吧。
下載好的驅動文件名:chromedriver.exe,為瞭減少配置的麻煩,應該把這個文件放置在Python安裝文件夾中。如果不會,可以右擊開始菜單中的:Python菜單 》【屬性】》【打開文件位置】然後直接粘貼即可。
二、萬事具備、準備開工瞭
不管你是善長使用PyCharm還是使用Python自帶的IDLE,反正結果都一樣。
1.驅動Chrome ,讓它訪問我們需要的網站吧:
下面的代碼將自動打開Chrome 瀏覽器,並且最大化,然後自動打開要訪問的網站。
from selenium import webdriver from time import sleep driver=webdriver.Chrome() driver.maximize_window() # 網站地址請修改後使用 driver.get("https://XXXX.XXXXXXX.cn/welcome/")
在瀏覽器中按F12功能鍵,進入開發者模式:選擇:Elements,按【Ctrl+F】進行查找:找【用戶登錄】,可以定位到對應的div標簽,class是signIn,這裡是通過單擊這個div進入下一個頁面的。
上代碼:
sleep(3) driver.find_element_by_class_name("signIn").click()
全部代碼重新執行後,將自動在Chrome新標簽頁上打開【登錄】頁
這裡有三個操作點,需要我們自動定位並輸入用戶名和密碼,然後單擊【登錄】按鈕。同時因為【登錄】是單獨的新的標簽頁,這也增加瞭操作的難度。同樣F12進開發者模式,分別查找:【用戶名】、【請輸入密碼】來確定兩個輸入框
【登錄】按鈕這裡用查找方式居然找不到,單擊開發者模式左上角的【選擇】按鈕,單擊一下【登錄】位置能夠自動確定
這個【登錄】是在標記裡面,其實是裡顯示的文本。所以選擇到button,基本就成功瞭。處理的代碼如下:
# 切換到新標簽頁的代碼 handles = driver.window_handles for handle in handles: if driver.current_window_handle != handle: driver.switch_to.window(handle) sleep(2) # 找到用戶名框並單擊定位 driver.find_element_by_id("username").click() sleep(2) # 模擬鍵盤在用戶名框輸入用戶名 driver.find_element_by_id("username").send_keys('327XXXX9880212XXXX') sleep(2) # 定位到密碼框單擊 driver.find_element_by_id('password').click() # 模擬輸入密碼 driver.find_element_by_id('password').send_keys('12345678') sleep(1) # 定位到登錄按鈕並單擊 driver.find_element_by_tag_name('button').click()
2.對於比較復雜的class選擇器
比如:
<button type="button" class="ant-btn ant-btn-link role-card-btn"><span>進入工作臺</span></button>
如果頁面中有多個button,就不太好使用button這個tag的情況下,可以使用
driver.find_element_by_css_selector("[class='ant-btn ant-btn-link role-card-btn']").click()
3.對於用戶名和密碼,可以使用文件讀寫方式處理
f=open('user.txt','r') driver.find_element_by_id("username").click() driver.find_element_by_id("username").send_keys(f.readline().strip('\r\n')) driver.find_element_by_id('password').click() driver.find_element_by_id('password').send_keys(f.readline().strip('\r\n'))
user.txt的文件格式:
327XXXX9880212XXXX 12345678
4.對於多個視頻文件的處理,一般使用
# 獲取到多個元素的情,類似於數組,通過下標方式來操作每個元素 sipin= driver.find_elements_by_css_selector("[class='XX-YY_ZZ']") sipin[0].click() sleep(60*時間) sipin[1].click()
5.關閉瀏覽器的操作(兩個操作可選)
# 關閉當前窗體 driver.close() # 關閉整個瀏覽器 driver.quit()
寫在題後
又到瞭寫結束語的時候瞭,使用IDLE和Pycharm雖然 不錯,但由於環境的問題,很多操作隻能是在安裝瞭類似環境的計算機上運行。其實,Python有個不錯的插件py2exe,可以把程序進行打包,經過打包後的程序可以在沒有Python環境的計算機上運行。
到此這篇關於Python構建自動在線刷視頻的實現的文章就介紹到這瞭,更多相關Python構建自動在線刷視頻內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- 詳解Python 使用 selenium 進行自動化測試或者協助日常工作
- 手把手教你搭建python+selenium自動化環境(圖文)
- python編程使用selenium編寫測試用例
- Python編程使用Selenium模擬淘寶登錄實現過程
- selenium自動化測試簡單準備