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!

推薦閱讀: