爬蟲的終極形態:nightmare


 

爬蟲的終極形態:nightmare

nightmare 是一個基於 electron 的自動化庫(意思是說它自帶瀏覽器),用於實現爬蟲或自動化測試。相較於傳統的爬蟲框架(scrapy/pyspider),或者dom操作庫(cheerio/jsdom),或者基於瀏覽器的自動化框架(selenium/phantomjs),他的優勢在於提供了一個簡潔有效 的編程模型。

來看官網給出的一個對比場景:

同樣是實現一個向yahoo自動提交關鍵詞並搜索的功能

1. PhantomJS實現

2. nightmare實現

 

怎么玩

安裝

 

涉及到下載並編譯一個electron,你國網速下需耐心等待

配置 options

 

 

實例化

 

 

交互用的API

簡單介紹幾個:

  • .goto(url[, headers]) 跳轉到url
  • .viewport(width, height) 瀏覽器窗口大小
  • .wait(selector) 等待某個dom元素出現
  • .click(selector) 點擊某個dom元素
  • .type(selector[, text]) 在某個dom元素中輸入
  • .inject(type, file) 在頁面上掛載 js/css 文件內容
  • .evaluate(fn[, arg1, arg2,...]) 在客戶端注入JS腳本並執行,從而實現electron模型下的C/S互動及數據交換
  • ……

自動登錄並輪詢的例子

有那么一個網站(比如叫chagang.site),在我登錄進去后,會不定時的查崗,需要點擊一個按鈕以證明沒有離線,怎么用nightmare實現自動掛機呢?

大概分這么幾步走:

  1. 先跳轉到該網站
  2. 模擬輸入帳號信息后點擊submit
  3. 登錄后等待主界面加載出現
  4. 在客戶端起一個定時器,2秒一次輪詢那個查崗按鈕,發現就模擬點擊

 

好像也沒有多難 :)

小結

本文只涉及到API中的一小部分,寶貝都在文檔里。用 nightmare,就是希望借助這種簡潔模型的梳理,相對愉悅的實現自動化交互(至於標題,終歸是意義過剩的產物,請忽略他的招搖。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM