2009-06-05 47 views
11

我一直在尋找方法來做到這一點,但還沒有完全找到正確的方法來做到這一點。在Linux下解釋並執行任意的Javascript CLI

任務:從Linux命令行執行Javascript。

例如,有二進制或任何要解釋JavaScript加載一些.js文件,然後打印一些變量的值。

更具體的例子:我希望在解釋和執行Javascript之後得到這個頁面的最終版本http://www.vureel.com/video/2809/American-Dad。如果你看一下使用Firebug的頁面,你會看到,這個名不見經傳的Javascript

<script language="JavaScript" type="text/javascript">/*<![CDATA[*/var a,s,n;function a8bcb4f34dfd6e81cfdb9c115d1671582(s){r="";for(i=0;i<s.length;i++){n=s.charCodeAt(i);if(n<128){n=n ... etc ...</script>

變成一個很好的嵌入代碼

<embed height="390" width="642" flashvars="file=http://vureel-cdn-2.vureel.com/leechingisillegal/537c69afbcaf4c7cf416f30077bbe9d1/4a29621d/here/2809.flv ...etc .../>

這只是一個例子,但希望你看到了什麼我正在開車。

+0

我認爲你的問題應該重新命名爲類似「我已經執行JS後如何獲取頁面源代碼」。我不認爲如何使用v8執行代碼的說明會幫助你,是嗎? – 2013-04-26 17:53:30

回答

3

你在兩個不同點上駕駛的方式1)在瀏覽器外執行javascript 2)在網頁上查看javascript的結果。

對於第一個問題,mozilla rhino是一個運行在java中的javascript解釋器。您可以通過命令行執行javascript。

對於第二個問題,查看Firebug中的dom選項卡,可以看到javascript運行後生成的文檔元素。或者你可以啓用腳本調試,保存頁面的本地副本並插入一個debug();聲明。

+0

fyi - 最後一個註釋是一個win/visual studio的提示,並且你說你在linux上,所以可能不適用 – 2009-06-05 18:37:29

+0

我正在研究Spidermonkey,因爲有一個可以與之交談的Perl庫。犀牛據我所知是幾乎相同的事情,但對於Java而不是C. – 2009-06-05 19:00:55

+0

對於第二個問題,您的解決方案與查看Firebug的輸出一樣好,但我需要能夠在命令行上得到它,所以使用瀏覽器不是一種選擇。 – 2009-06-05 19:00:57

2

看看http://phantomjs.org/

這是一個無頭的Web瀏覽器,因此,你要構建DOM和像你在真正的瀏覽器操作它。顯然你可以導出結果。

0

如果你喜歡Python,你可以從GitHub獲取ghost.py,它允許你創建一個無頭的WebKit瀏覽器,並在你的Python腳本中控制它。我已經通過IPython Notebook交互式地使用了它,它在盒子裏工作得非常好。我擴展它與BeautifulSoup一起工作,這很好。