網頁抓取 是從網站中提取數據的過程。您可以使用Web瀏覽器手動抓取,也可以使用Selenium和Puppeteer等庫自動抓取。
Selenium 是一個開原始程式工具,可讓您自動化 Web 應用程式並測試網站的功能,而無需在瀏覽器中編寫任何代碼。它也適用於其他程式設計語言,如Java,Python,C#等。
Puppeteer 是一個 JavaScript 庫,用於在無頭 Linux 系統上自動執行 Chrome 瀏覽器測試。Puppeteer 支援 Chrome,並已在 Ubuntu 16.04 LTS、18.04 LTS 和 Debian 9 Stretch/Buster/Siduction(64 位)上進行了測試。
在本文中,我們將學習如何在 NodeJS 中使用 Selenium WebDriver 和 Puppeteer 來使用 Chrome 瀏覽器自動化應用程式。
Menu
選單
什麼是木偶師?
Puppeteer是一個JavaScript庫,允許你使用puppeteer.js來控制瀏覽器。該庫提供了一個 API,用於創建、管理和與網頁交互,而無需依賴任何第三方。它還支援捕獲滑鼠事件和鍵盤輸入,以便您可以與頁面進行交互。
木偶師如何工作?
Puppeteer是一個用於控制Chrome的節點庫。它允許您使用JavaScript控制瀏覽器,並以僅使用HTML,CSS和JS無法實現的方式與之交互。
您可以使用它來模擬滑鼠/鍵盤事件、捕獲螢幕截圖、操作 DOM 元素、發送 HTTP 請求等。Puppeteer還有一個API,允許您編寫木偶腳本,而無需直接使用其任何API。您可以在此處閱讀有關 API 的更多資訊:https://github.com/puppeteerjs/puppeteer-api。
Puppeteer解決了以下問題:如何在無法運行JavaScript的情況下控制瀏覽器?Puppeteer使您能夠類比滑鼠/鍵盤事件,捕獲螢幕截圖,操作DOM元素,發送HTTP請求等等。也可以在不直接使用其任何 API 的情況下編寫木偶腳本。如果您想構建自己的 Chrome 擴展程式,並意外與瀏覽器交互,這將非常有用。
複雜性和自動化環境每天都在變化,因此一個工具可能不是所有工具的解決方案。木偶師有一些局限性。它僅支援Chrome瀏覽器。Firefox的Puppeteer正在進行中。
使用木偶師有什麼好處?
Puppeteer提供了一種在瀏覽器中運行腳本的簡單方法,而無需自己編寫。它簡單、輕量級且可擴展。您可以將其與任何程式設計語言或框架(NodeJS,Python,Java)一起使用。它有自己的API,因此您不必僅僅為了網頁抓取目的而學習另一個API。
你不需要知道Selenium是如何工作的,使用Puppeteer,但你仍然可以獲得它的所有好處:自動化,可測試性和可移植性!
使用木偶師的缺點是什麼?
木偶師是一個非常年輕的框架。它仍處於測試階段,不支援所有瀏覽器(它僅支援Chrome,Firefox,Opera和Safari)。但是,隨著時間的推移,Puppeteer將能夠支援更多的瀏覽器。該API也不像Selenium那樣成熟,因此您最初可能會遇到一些麻煩,但隨著時間的推移它會變得更好。您可以在其官方網站上找到許多如何使用Puppeteer的示例:puppeteerjs.com/docs/getting-started/。
如何安裝木偶師?
您可以通過從網站下載套件或手動安裝來安裝Puppeteer。轉到Puppeteer存儲庫頁面並下載適用於您的作業系統的最新版本。要運行它,您需要在計算機上安裝 NodeJS。如果您不知道從哪裡開始,請轉到此處:nodejs.org/en/download。運行 npm install -g puppet。這將下載運行 puppetserver 所需的所有依賴項。現在在你的主目錄中打開一個終端視窗,然後鍵入puppetserver。
如果一切正常,您應該會看到這樣的內容:
$ node server Starting server… done! http://localhost:4200 Connecting…done! http://localhost:4200 Disconnected / Connected http://localhost:4200 <– Start scraping now!
若要停止,請按 Ctrl+C,然後鍵入 exit。
什麼是硒?
Selenium是一個強大的工具,可用於自動化基於Web的應用程式。它通常也被稱為 Web驅動程式。硒已經存在了相當長的一段時間,它已成為IT行業中最受歡迎的工具之一。
硒有什麼作用?
Selenium 允許您通過執行不同的操作(例如按鍵、填寫表單甚至瀏覽頁面)來自動化您的網站。該軟體的主要目標是使自動化測試變得簡單高效,而無需自己編寫任何代碼。您可以從瀏覽器(Chrome / Firefox)或Java,C#或Python等程式設計語言中使用此軟體。在計算機上安裝后,您必須下載在埠 4444(預設)上運行的 Selenium 伺服器。然後打開Chrome / Firefox並在位址欄中輸入 chrome://extensions,您將在其中看到可用擴展程序的清單;選擇 「管理擴展」,然後按兩下 「載入解壓縮的擴展 」 按鈕。
您可以使用 Selenium 測試網站、行動應用程式和桌面應用程式。它使用起來很簡單,允許您在沒有任何程式設計知識的情況下自動化基於 Web 的應用程式。您還可以使用Selenium IDE創建自己的測試,該IDE具有可視化介面,用於以使用者友好的方式開發測試。
硒的優點
- 它適用於所有網路瀏覽器(Chrome,Firefox,IE)和行動裝置(Android)。Selenium是跨平臺的。您需要做的就是為您選擇的平臺安裝 IDE,然後開始使用 API。您不必為每個平台學習新的 API 或不同的語言 – 只需使用一種在所有平台上運行的語言。
- Selenium支援大多數程式設計語言,包括Java,C#,Python和許多其他語言。如果你想在JavaScript中自動化一些東西,你可以將NodeJS與selenium-nodejs一起使用。
- Selenium支援多個框架,如量角器,WebDriver等。這些框架最好的一點是,它們提供了一個很好的抽象層,這比將純瀏覽器自動化代碼直接寫入瀏覽器本身更容易。例如,如果我們希望我們的測試同時針對多個瀏覽器運行,那麼我們可以使用 selenium-web 驅動程式和 selenium-webdriver2 來做到這一點。這意味著在一次跨多個瀏覽器進行測試時不會有任何問題,因為一切都將由框架本身處理,而不是在每個瀏覽器中手動編寫自定義代碼(這將使我們的測試套件看起來更加複雜)。
- 許多外掛程式可用於Selenium,例如Google Chrome擴展程式,Firefox外掛程式等。還有什麼?很多例子!不僅來自開源專案,還來自Appium,Sauce Labs或Watir等商業專案。因此,如果您正在尋找快速簡便的東西,請嘗試一下!它們是很棒的工具!它們也支援異步測試,這意味著即使測試花費的時間可能比預期長,它也不會影響並行運行的其他測試,而不會阻塞彼此的執行流(異步模式)。這樣,我們可以編寫快速的UI測試,而不必擔心減慢應用程式的速度。
硒和木偶的市場趨勢:為什麼你應該關心?
Selenium&Puppeteer的市場趨勢顯示,在過去的幾年裡,使用量顯著增加,特別是自Selenium 2於2014年發佈以來。從那時起,硒的受歡迎程度繼續進一步增長,這意味著在可預見的未來,它可能會繼續以這種速度增長。
Web 測試的未來是什麼?
開源社區繼續開發新技術並改進現有技術,沒有任何跡象表明很快就會放緩。只要我們繼續創新和創建新工具,我們就可以期待更多的Web測試技術改進。
網路自動化工具:為什麼要使用它們?
當您的團隊成員需要處理他們的專案時,或者當他們需要幫助通過自動化測試測試他們的代碼庫時,訪問像 WebDriver 這樣的自動化工具將使他們比每次想要手動測試時手動嘗試手動解決方案要容易得多。
當您擁有像 WebDriver 這樣的 Web 自動化工具時,您可以使用它來自動化您的測試並以不同的語言編寫它們。您還可以使用它與瀏覽器進行交互,並測試難以或不可能手動完成的應用程式的特定功能。可能性是無窮無盡的!
使用自動化工具將允許您為代碼庫編寫自動化測試,而不必擔心事情在後臺的工作方式,從而使您的生活更加輕鬆。
硒或木偶師:哪個最適合網路抓取?
兩者之間的主要區別在於Puppeteer在Node.js中運行,而Selenium在瀏覽器中運行。
您可以使用Puppeteer進行 網頁抓取 和API測試,但它不像Selenium那樣得到廣泛支援。它也沒有內置的UI測試運行器,所以如果你想把它與PhantomJS或NightwatchJS這樣的無頭瀏覽器一起使用,你需要編寫自己的測試運行器。
Selenium比Puppeteer有更多的瀏覽器支援,它的UI測試運行程式可以與大多數流行的瀏覽器(包括Chrome)開箱即用。然而,與Puppeteer相比,Selenium仍然缺少一些功能。值得注意的是,用於與頁面上的元素進行交互的WebDriver API - 這意味著僅使用此庫很難跨多個頁面/域/應用程式(例如,按兩下連結)自動執行複雜的交互。
現在是時候提到我們的 輪換住宅代理 極大地改善了硒和木偶的網頁抓取操作。