推薦一款 10 行 Python 代碼實現(xiàn)網(wǎng)頁自動化工具

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

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

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

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

點擊下載按鈕
最后一步就是點擊下載按鈕,這一步和上一步類似,我們先通過 Selenium 的接口來獲取 Web 元素,然后點擊即可
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 行代碼,和人為手動操作步驟一樣,非常簡單。
除了下載圖片這項簡單的任務(wù),我們也可以利用它開發(fā)一款自動化的工具,例如文件的上傳、編輯、下載影視音樂、B站視頻等,可以舉一反三。
如何查詢指定元素名稱?
在前面事例中,涉及到pn1、btn-download這 2 個 HTML 層面的內(nèi)容,分別是元素名稱和元素類別名稱,那么,這是怎么獲取的呢?
其實,非常簡單,我們只需要鼠標(biāo)右鍵點擊對應(yīng)按鈕,然后選擇?檢查?即可

好了,以上就是利用 Helium 實現(xiàn)網(wǎng)頁自動化的常規(guī)操作,大家也來試試吧。
