【问题标题】:Extract/decode Javascript variables from html into python从html中提取/解码Javascript变量到python
【发布时间】:2015-04-17 09:06:09
【问题描述】:

我正在尝试使用 python 从 HTML 站点中提取一些 javascript 变量:

<script>
var nData = new Array();
var Data = "5b7b......";
nData = CallInit(Data);
...
...
</script>

我可以在firebug(DOM面板)中看到“nData”的内容没有问题:

[Object { height="532",  width="1280",  url="https://example.org...8EDA4F3F5F395B9&key=lh1",  more...}, Object { height="266",  width="640",  url="https://example.org...8EDA4F3F5F395B9&key=lh1",  more...}]

nData 的内容是一个 URL。 如何将 nData 的内容解析/提取到 python? 有可能吗?

谢谢

【问题讨论】:

  • 你能给我们一个网站链接吗?
  • 在将 JS 上下文中的源代码移至 python 之前,您是否对其有影响?比如打开网页,插入一条JS-write语句,保存为HTML。所以可以先把变量写成html,然后通过python解析。
  • 如果不是,您需要某种 javascript 运行时环境。可以查看stackoverflow.com/questions/2346584/…stackoverflow.com/questions/2894946/…的答案。
  • @wenzul 不,我只是想从网站中提取 url,并在 python 脚本中使用它。

标签: javascript python html http xbmc


【解决方案1】:

在 python 库Ghost.py 的帮助下,应该可以从执行的 Javascript 代码中获取动态变量。

我刚刚尝试了一些small test site 并得到了一个名为a 的Javascript 变量,我在该页面上将其用作python 对象。我做了以下事情:

  1. 使用pip install Ghost.py 安装 Ghost.py。

  2. 使用pip install PySide 安装 PySide(它是 Ghost.py 的先决条件)。

  3. 使用以下python代码:

    from ghost import Ghost
    ghost = Ghost()
    ghost.open('https://dl.dropboxusercontent.com/u/13991899/test/index.html')
    js_variable, _ = ghost.evaluate('a', expect_loading=True)
    print js_variable
    

您应该能够通过使用ghost.open 打开您的站点,然后调用ghost.evaluate('nData'),将您的变量nData 放入python 变量js_variable

【讨论】:

  • 酷,不认识鬼。只是机械化和东西。对于仅检索网址,您可以查看 CallInit 并使用 python 构建您的网址,并将 Data 作为参数。
  • 可以做同样的事情,但使用机械化?
  • 请根据ghost官网信息更新ghost库。我发现 ghost 类现在只有最新版本的 ghost.start(),它使用会话来管理爬取。
猜你喜欢
  • 2015-09-09
  • 1970-01-01
  • 2017-12-25
  • 2019-03-02
  • 2011-12-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多