2017-05-16 59 views
1

我的任務是從任何使用Python的網頁獲取命名函數的列表。從Python執行頁面上的JS代碼

我有一個使用JavaScript編寫的腳本。它做我需要的。

加載頁面後,我可以從JS控制檯運行腳本(例如,從GoogleChrome中的開發工具)。我有一系列函數名稱作爲結果。好吧,但是我進入頁面並手動從瀏覽器執行腳本。但問題是要從Python做同樣的事情。它可以看起來像這樣:

def get_named_functions_list(url): 
    myscript = settings.get_js_code() # here I get script that I told above 

    tool.open(url) 

    while not tool.document.READY: # here I wait while the page will completely loaded 
     pass 

    js_result = tool.execute_from_console(myscript) 

    return list(js_result.values()) 

那麼,有沒有在Python的工具,有助於自動解決問題?

UPDATE: 更清楚,我可以把任務子任務(在Python)名單:

  1. 請求給定的URL
  2. 等待的document.ready(功能... )將完成。
  3. 執行我的JS代碼(如在瀏覽器中)。
  4. 獲取JS代碼返回的結果。
+0

你的問題還不清楚。可能是你需要報廢 –

+0

對於這個任務,你可能需要使用[HTML解析器](http://stackoverflow.com/questions/2782097/python-is-there-a-built-in-package-to -parse-html-into-dom)和[JavaScript解析器](http://stackoverflow.com/questions/390992/javascript-parser-in-python)。 –

+0

@ binu.py,我已經更新了主題,以便更清楚。也許它會有所幫助。至於報廢,我不需要從頁面獲取數據。關鍵任務是在瀏覽器範圍內執行JS。我認爲,它應該像一個簡單的非GUI GUI瀏覽器或類似的東西。 – Bogdan

回答

0

我已經解決了使用selenium的問題。

然後我已經下載了PhantomJS驅動程序來使用沒有瀏覽器窗口的硒並將其添加到PATH(Windows)中。

最後,我用下面的腳本:

from selenium import webdriver 

myscript = settings.get_js_code() 
driver = webdriver.PhantomJS() 
driver.get(url) 
result = driver.execute_script(myscript) 
driver.quit() 

注意,得到的結果你的腳本必須返回的東西。