解放雙手!10行Python代碼就能搞定的網(wǎng)頁自動(dòng)化工具
各種各樣的網(wǎng)站在我們?nèi)粘9ぷ骱蛯W(xué)習(xí)中占據(jù)著舉足輕重的地位,學(xué)習(xí)、影音娛樂、查詢資料、協(xié)同辦公,越來越多的任務(wù)都被遷移到瀏覽器。
因此,網(wǎng)頁也蘊(yùn)含著很多有價(jià)值、我們能夠用得到的資源。例如,數(shù)據(jù)、歌曲、影視、文本、圖片。所以,這幾年來爬蟲這項(xiàng)技術(shù)也成了很多開發(fā)人員必備的技能之一。
以Python爬蟲為例,比較常用的爬蟲手段是結(jié)合request、正則表達(dá)式等有一定門檻的工具來完成。而且,還需要對(duì)HTML、web具有一定的基礎(chǔ)。
這把很多開發(fā)同學(xué)拒之門外,也讓很多初學(xué)者花費(fèi)很多功夫和時(shí)間來學(xué)習(xí)爬蟲這些技能。
其實(shí),除了上述提到那些具有一定門檻的爬蟲知識(shí)之外,有一些另辟蹊徑的同學(xué)會(huì)選擇Selenium這款Web應(yīng)用測(cè)試工具來完成爬蟲任務(wù),它能夠像真正的用戶一樣完成一系列的操作。
Selenium已經(jīng)很好用,但是,它的大多數(shù)交互還是和Web元素之間進(jìn)行的,需要使用到HTML id、xpath、CSS選擇器。雖然自動(dòng)化程度高了一些,但是還不算足夠的容易使用。
而本文的主角Helium則是在Selenium的基礎(chǔ)上封裝的更加高級(jí)的Web自動(dòng)化工具,它能夠通過網(wǎng)頁端可見的標(biāo)簽、名稱來和Web進(jìn)行交互,例如,
點(diǎn)擊鍵盤按鍵 右鍵點(diǎn)擊 懸浮 滾動(dòng)鼠標(biāo) 拖動(dòng)文件 刷新 ......

通過Helium,即便不在了解Html、CSS這些知識(shí),你依然可以輕松的完成Web自動(dòng)化程序的開發(fā),輕松掌握爬蟲技能,同時(shí)能夠輔助日常重復(fù)性勞動(dòng),徹底解放你的雙手。
為了方便大家理解和使用,Helium作者把一些常用方法總結(jié)了一個(gè)清單。另外,在Python文件列出了公共函數(shù),使用者可以通過閱讀這個(gè)Python文件的代碼來了解有哪些函數(shù)接口可以調(diào)用。
在前面GIF動(dòng)圖中給出了Helium與Github的交互過程,其中涉及了我們常用的操作,例如,
輸入賬號(hào)密碼 點(diǎn)擊按鈕 跳轉(zhuǎn)網(wǎng)頁
在這里,我就不再重復(fù)這個(gè)過程,下面以爬取網(wǎng)頁圖片鏈接的例子來講解一下Helium的用法,同時(shí)把Helium的常用操作串聯(lián)起來。各位可以根據(jù)自己的需求,舉一反三,來發(fā)揮Helium的價(jià)值。
首先,來了解一下我們個(gè)人在下載圖片的過程中的具體流程。
打開百度搜索; 搜索相關(guān)圖片; 跳轉(zhuǎn)到圖片頁面; 打開圖片; 點(diǎn)擊下載按鈕;
下面,就通過Helium來逐步完成上述5步。
打開百度搜索
Helium可以直接打開對(duì)應(yīng)的網(wǎng)址,目前支持Chrome和火狐瀏覽器,只要用到start_chrome或者start_firefox函數(shù),下面以Chrome瀏覽器為例,
from?helium?import?*
start_chrome("www.baidu.com")

搜索圖片&跳轉(zhuǎn)到圖片頁面
搜索圖片過程中,首先需要在搜索框輸出想要的目標(biāo)圖片,然后點(diǎn)擊百度一下或者按下ENTER鍵。
write("詹姆斯")
click("百度一下")
//?或者
press(ENTER)
click("圖片")

打開圖片
在前面Helium與Github交互的示例中,我們發(fā)現(xiàn),Sign in、Username等都有標(biāo)簽名稱。但是,我們?cè)谶@里跳轉(zhuǎn)到圖片頁面時(shí),發(fā)現(xiàn)每幅圖片并沒有標(biāo)簽,那么我們?cè)撛趺创_定點(diǎn)擊哪一幅圖呢?
好在Helium兼容了Selenium的接口,我們可以通過Selenium來獲取頁面的元素,然后結(jié)合Helium的點(diǎn)擊就可以實(shí)現(xiàn)打開圖片這一步驟。
//?pn1是其中一幅圖的名稱,通過名稱來獲取對(duì)應(yīng)的元素,然后調(diào)用Helium的click函數(shù)點(diǎn)擊圖片
img?=?driver.find_element_by_name("pn1")?
click(img)

點(diǎn)擊下載按鈕
最后一步就是點(diǎn)擊下載按鈕,這一步和上一步類似,我們先通過Selenium的接口來獲取Web元素,然后點(diǎn)擊即可。
download?=?driver.find_element_by_class_name("btn-download")
click(download)

from?helium?import?*
start_chrome("www.baidu.com")
write("詹姆斯")
press(ENTER)
click("圖片")
img?=?driver.find_element_by_name("pn1")?
click(img)
download?=?driver.find_element_by_class_name("btn-download")
click(download)
可以看出,整條爬取圖片的代碼僅僅需要10行代碼,和人為手動(dòng)操作步驟一樣,非常簡(jiǎn)單。
除了下載圖片這項(xiàng)簡(jiǎn)單的任務(wù),我們也可以利用它開發(fā)一款自動(dòng)化的工具,例如文件的上傳、編輯、下載影視音樂、B站視頻等,可以舉一反三。
如何查詢指定元素名稱?
在前面事例中,涉及到pn1、btn-download這2個(gè)HTML層面的內(nèi)容,分別是元素名稱和元素類別名稱,那么,這是怎么獲取的呢?
其實(shí),非常簡(jiǎn)單,我們只需要鼠標(biāo)右鍵點(diǎn)擊對(duì)應(yīng)按鈕,然后選擇檢查即可。

以上便是?Helium的基本用法。是不是看起來很好用的樣子?
想了解更詳細(xì)的用法,可以看作者的原版文檔,里面例子寫得很清楚:
作者:Jackpop
來源:平凡而詩意?
_往期文章推薦_
