【问题标题】:run javascript on multiple html files在多个 html 文件上运行 javascript
【发布时间】:2014-01-18 23:08:05
【问题描述】:

我有一个包含 1000 个 html 文件的文件夹。

我必须使用 xpath 从每个 html 中删除某些节点。所以我做了javascript。我无法打开每个文件并通过 Firefox 控制台运行 javascript。

我用的是linux,怎么办

【问题讨论】:

  • 最好使用 Python/Ruby 库来呈现 HTML 文件并注入 JavaScript。我最好的猜测是使用 Selenium。
  • 我不想注入脚本。我想应用脚本并删除一些内容。
  • 您似乎没有理解注入的含义。它只是解释了 Selenium 将在每次页面渲染后添加 JavaScript(它是一个自动化的 Web 浏览器)。注入 JavaScript 后,您可以将新处理的 DOM 存储在单独的文件夹中,或者只是覆盖当前文件。 Selenium 为您提供所有的力量。
  • 好的,它在 linux 中可用吗?
  • 当然; seleniumhq.org。您能否分享一个示例,以便我们更好地了解您想要实现的目标?

标签: javascript html


【解决方案1】:

Javascript 可以使用nodejs 在 Linux 服务器上运行。

这里是在 nodejs 中访问文件系统的 javascript API。

http://nodejs.org/api/fs.html

您还需要一个用于 nodejs 的 xpath 库。好像有好几个。 https://nodejsmodules.org/tags/xpath

Nodejs 有时会让新手感到困惑,因为虽然它是单线程的,但它也被设计为异步的,当信息可用时要求回调函数调用并立即返回。许多文件系统调用的名称中都有“同步”。这些是“同步的”,如果您的自动编辑应用程序大部分已经以同步样式编写,则可能更合适。

【讨论】:

  • 我会通过它。
【解决方案2】:

这可能会更容易使用任何服务器端语言。

您可以制作一个 PHP 文件,它读取您的 1000 个 HTML 文件所在的目录,将它们一一加载并更改它们,然后保存它们。

例如:

if ($handle = opendir('projects')) {
    while (false !== ($entry = readdir($handle))) {
      $file = file_get_contents($entry);
      $file = // make your changes here
      file_put_contents($entry, $file);
    }
  }
  closedir($handle);
}

【讨论】:

    【解决方案3】:

    这可以帮助通过 node.js 解决方案: http://www.youtube.com/watch?v=w6kD6BNW4GE

    【讨论】:

    • 但是使用 nodejs 我可以调用一个文件并运行 dom 相关的任务和相同的文件
    猜你喜欢
    • 2011-03-10
    • 2012-05-12
    • 1970-01-01
    • 2011-05-07
    • 1970-01-01
    • 2015-06-21
    • 1970-01-01
    • 1970-01-01
    • 2021-11-11
    相关资源
    最近更新 更多