【问题标题】:Evaluate javascript on a local html file (without browser)在本地 html 文件上评估 javascript(无浏览器)
【发布时间】:2013-04-28 19:43:08
【问题描述】:

这是我正在进行的一个项目的一部分。

我想自动化一个 Sharepoint 站点,特别是从我和我的同事只有前端访问权限的数据库中提取数据。

我终于设法让机械化(在 python 中)使用 Python-NTLM 完成此任务,并通过修补部分源代码来修复重复发生的错误。

现在,我希望这是我最后的障碍:我需要提交的部分表单似乎是 JavaScript 函数的输出:|你瞧…… Mechanize 不支持 javascript。我不想自己在 python 中模拟 javascript 功能,因为理想情况下我想要一个可重用的解决方案......

那么,任何人 知道如何评估我从 sharepoint 下载的本地 html 上的 javascript 吗?我只是想以某种方式运行 javascript(以完成页面的加载),但没有浏览器。

我已经研究过 selenium,但是对于我需要完成的工作量来说,它的速度相当慢...我目前正在研究 PyV8 以 try 并自己评估 javascript...但肯定有一个应用程序或库(或任何东西)可以做到这一点??

【问题讨论】:

  • js是做什么的,打ajax调用?如果是这样,请自己制作。
  • 我实际上在我的回答中发布了我想尽可能避免模拟功能,以便我可以在不同的网站上重复使用我的最终产品。

标签: javascript python html screen-scraping eval


【解决方案1】:

好吧,最后我得出了以下可能的解决方案:

  • 无头运行 Chrome 并收集 html 输出(感谢 koenp 提供的链接!)
  • 运行 PhantomJS,一个带有 javascript api 的无头浏览器
  • 运行 HTMLUnit;同样的东西,但对于 Java
  • 使用 Ghost.py,一个 基于 python 的无头浏览器(由于某种原因,我在任何地方都没有看到建议!)
  • 基于 Pyv8(Google v8 javascript 引擎)编写一个基于 DOM 的 javascript 解释器,并将其添加到我当前使用 mechanize 的“半解决方案”中。

目前,我决定使用 Ghost.py 或我自己对 PySide/PyQT Webkit 的修改(ghost 的工作原理)来评估 javascript,因为如果您将它们优化为不下载,它们显然可以运行得非常快图像并禁用 GUI。

希望其他人会发现此列表有用!

【讨论】:

    【解决方案2】:

    嗯,你需要一些既能理解 DOM 又能理解 Javascript 的东西,所以这归结为某种无头浏览器。也许你可以看看selenium webdriver,但我猜你已经这样做了。我认为没有在实际浏览器引擎中运行这些东西的简单方法。

    【讨论】:

    • 我在看 phantomJS...看起来它可能是我需要的。是否可以在不实际打开浏览器的情况下通过 IE 或 Chrome 的浏览器引擎加载网页?也许通过 COM 接口或其他方式?
    • 我不确定,也许这有助于stackoverflow.com/questions/9210765/…
    • 感谢您的链接。如果这是一个个人项目,我肯定会走这条路……但由于我想让它成为其他 IT 部门的可部署解决方案,我想避免让谷歌浏览器成为解决方案的强制性组件。
    猜你喜欢
    • 2012-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-23
    • 2011-04-24
    • 1970-01-01
    • 2013-08-28
    相关资源
    最近更新 更多