phantomJS 、casperjs

   都是基於js語法規則的無頭瀏覽器,casperJs是對phantomjs的一次封裝。即phantomjs是原生的,而casperjs是封裝在以phantomjs基礎上的玩意。

  這玩意的作用,就是完成模擬瀏覽器行爲,模擬真實用戶點擊瀏覽器瀏覽網頁的行爲。然後可以通過編寫代碼,來控制casperjs來定向實現自己所需要的功能,比如常見的抓取某個網站的內容,就是常見需求--就是所謂的網絡爬蟲!其次也可以做一些常用每天的簽到功能,估計刷火車票也可以(在之前沒有驗證碼的時候)。反正這玩意的作用,就是相當於一個瀏覽器,通過代碼控制這玩意,就是完成模擬真實的人瀏覽網頁的過程。當然,其中會涉及到必須要手動的解決隨機碼,比如驗證碼之類的問題,那就比較操蛋。如果是簡單的數字驗證,還可以通過抓取驗證碼的數字進行自動驗證。不過像12306這種BT到沒有朋友的網站,其驗證碼規則以及驗證辦法,估計是通過圖片每次生成的唯一串隨機碼來區別的,估計破解不了圖片轉成他們變態格式的驗證串,是沒有辦法破解的。扯遠了,繼續迴歸casperjs這玩意。

   casperjs就是模擬一個用戶通過瀏覽器正常瀏覽網頁的過程,就跟把大象放到冰箱一樣簡單。(三步走,打開冰箱,放進大象,關上冰箱)。用戶瀏覽網頁,第一步,打開瀏覽器,casperjs就是通過,start()來初始化一個瀏覽器出來,在start的時候,可以配置相對應的各種參數。(超時時間,遇到錯誤處理方式、是否加載頁面的圖片、插件、樣式信息、記錄日誌級別等等)

    打開瀏覽器,然後瀏覽器有各種類別,谷歌,火狐,ie,於是乎可以通過useragent()來指定casperjs生成的瀏覽器的類型,(通過這種僞造UA頭的方式,可以定向欺騙某些根據UA進行訪問限制的網站)

    其次就是正常打開你瀏覽的網頁的url地址,在casperjs裏面,就是通過thenopen(url)來實現,open就是打開你要瀏覽的網頁地址。

    接着就是瀏覽頁面打開你要觀看的信息了和具體的頁面操作點擊簽到,或者點擊頁面的二次鏈接地址,這裏就可以通過js的閉包函數來實現,就是js規則,dom操作,getEmlemtBy(),點擊二次鏈接可以繼續open()~然後可以得到你要的信息。

    最後是完成操作後,關閉瀏覽器。casperjs即用exit退出此次模擬行爲。要將上面所有定義的過程步驟跑起來,casperjs用run命令,將步驟一步步跑起來。完成一次用戶瀏覽網頁的過程。

    上面就是casperjs的主體流程,具體細節到裏面的內容,得具體看文檔。比如最簡單的提升打開頁面的等待時間在初始化瀏覽器時候,配置好減少加載不必要的項目,設置waitfor行爲(等待頁面打開後再進行下一步操作)等等~頁面發生未知錯誤,退出還是捕捉做其他處理~這些都是精確到細節的東西,需要多看文檔尋求解決方案。

    早之前做的一個抓取項目,就通過看文檔,設置loadimage,loadplugin的選項爲false,提升將近一倍的速度。具體的細節的東西,還是要多死摳文檔。

發佈了60 篇原創文章 · 獲贊 2 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章