从Python

时间:2017-05-16 19:31:20

标签: javascript python python-3.x

我的任务是使用Python从任何网页获取命名函数列表。

我有一个使用JavaScript编写的脚本。它做我需要的。

加载页面后,我可以从JS控制台运行脚本(例如,从GoogleChrome中的dev-tools)。我将函数的名称数组作为结果。好吧,但我转到页面并手动从浏览器执行脚本。但问题是从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中是否有一个工具可以帮助自动解决问题?

更新: 为了更清楚,我可以将任务划分为子任务列表(在Python中):

  1. 请求给定网址
  2. 等待document.ready(功能...)将结束。
  3. 执行我的JS代码(如在浏览器中)。
  4. 获取结果JS代码返回。

1 个答案:

答案 0 :(得分:2)

我使用selenium解决了这个问题。

然后我下载了PhantomJS驱动程序以在没有浏览器窗口的情况下使用selenium并将其添加到PATH(Windows)。

最后,我使用以下脚本:

from selenium import webdriver

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

请注意,要获得结果,您的脚本必须返回一些内容。