2017-05-04 144 views
3

我一直在試圖抓取一個受Distil Networks保護的網站, ,其中使用selenium(使用Python)只會失敗。Node.js使用chrome-remote-interface進行抓取

我做了一些搜索,我的結論是,該網站可以通過使用某種JavaScript來檢測您是否在使用Selenium。然後我在chrome-remote-interface拿到了一個戰利品,就像我想要的東西,但後來我被卡住了。

我想什麼做的是自動化以下步驟:

  1. 打開Chrome實例
  2. 導航到一個頁面
  3. 運行一些JavaScript代碼
  4. 收集數據並保存到文件
  5. 重複步驟2 - 4

我知道我c一個被打開的Chrome實例進行調試:

google-chrome --remote-debugging-port=9222 

,我還可以通過在節點打開控制檯:

chrome-remote-interface -t 127.0.0.1 -p 9222 inspect -r 

我也可以運行簡單的腳本像

Page.navigate({url:"https://google.com"}) 
Runtime.evaluate({expression:"1+1"}) 

但是像我無法直接在Node.js上獲取DOM,因爲我可以在Chrome開發人員工具控制檯上執行該操作。基本上我想要的是在Node上運行腳本,就像我可以在Chrome開發人員工具控制檯上執行的操作一樣。

此外,chrome-remote-interface還沒有足夠的文件用於刮取。有沒有什麼好的聯繫?

回答

1

Runtime.evaluate評估的JavaScript表達式在頁面上下文中執行,就像在DevTools控制檯中發生的一樣。

您可以使用DOM

的DOM,例如DOM.getDocumentDOM.querySelector等互動還記得chrome-remote-interface主要是圖書館的意思,它可以讓你寫你自己的Node.js應用, chrome-remote-interface inspect只是一個實用工具。

有幾個地方,你可以得到的幫助:

如果你問一些更具體的問題,我會很樂意嘗試幫助你。

最後,您可能想看看automated-chrome-profiling,我認爲這在結構上與您試圖實現的類似。