2012-07-22 166 views
1

我可以用什麼來實現以下內容:腳本瀏覽器或以其他方式向服務器發送請求,登錄,瀏覽網站,例如。找到鏈接並導航到這些鏈接。腳本瀏覽器scapper

現在,因爲我進入了NodeJS,所以我在查看node.io.它允許你很容易地刮網站,但問題是當我嘗試發佈(登錄),我什麼都沒有回來!

nodeio = require "node.io" 

nodeio.scrape -> 

    @post "http://localhost/auth/login", { 
     username: "username" 
     password: "password" 
    }, -> 

     console.log "=====After Login=====" 

但我只是得到

OK: Job complete 

即使登錄失敗,我應該去登錄console.log後?


然後我想也許它更好地通過腳本編寫瀏覽器來實現它,它會模擬更真實的請求?

回答

2

Selenium或Watir讓你腳本瀏覽器。他們使用實際的瀏覽器,所以他們會比低級工具慢,但他們會做瀏覽器的一切(即JavaScript)。

+0

我試過Zombie.JS路由,似乎沒有在一些網站上工作(不受我控制),可能他們檢測到它可能是一個機器人連接或什麼的,並拒絕連接。所以我們要走的是Selenium的路線,雖然運作良好,但速度慢一些,因爲我喜歡的速度太慢,但我想我可以讓它繼續運行。我認爲緩慢的原因在於,每次我執行「get(url)」時,它都會等待整個頁面,包括任何廣告或腳本在繼續之前進行渲染? – jm2 2012-07-23 01:21:02

+0

我知道Watir等待整個頁面加載(不是腳本)。我聽說Selenium沒有,但他們可能已經改變了這一點。 – 2012-07-23 12:43:09

2

node.io似乎是一個很好的工具,但我也推薦zombie.js。它似乎主要面向測試,但文檔看起來對於刮刮也很好。

如果您想要使用腳本瀏覽器路由,請忽略我的答案。 :)

+0

它似乎有些網站阻止我的連接,或者它不工作,因爲也許殭屍/節點是爲了測試/訪問由您控制的網站?也許我需要設置用戶代理等? – jm2 2012-07-23 01:22:17

+0

是的,您正在抓取的網站可能會檢查您的用戶代理,或每個客戶端/ IP都有API速率限制。 – rdrey 2012-07-23 06:59:16

+0

嗯...我怎麼能讓殭屍/ NodeIO的行爲更像一個真正的瀏覽器?只需發送正確的HTTP頭像用戶代理工作?真正的瀏覽器發送的常見標題是什麼? – jm2 2012-07-23 09:17:34