我有一些html文件,我需要进行自动处理,基本上是正则表达式替换,还有一些更复杂的操作,比如将文本的选择块从一个文件复制到另一个文件。
我想创建一系列脚本,让我可以进行此处理(需要在不同批次的文件上多次完成)。使用Go来实现这一点(将文件读入内存,正则表达式,保存到磁盘)是微不足道的,但我是该项目中唯一熟悉Go的成员。
Javascript更普遍,我确实有熟悉该语言的项目成员,所以它更适合这方面。如果我以后不在身边,别人可以编辑脚本。
有没有一种简单的方法来编写一些JS脚本来进行磁盘文本处理?我正在寻找跨平台解决方案(OSX,Windows)。理想情况下,一旦编写了脚本,就可以通过双击图标来执行它们 - 这将是"而不是计算机人员"在某些时候参与。
此外,我希望能够使用某种警报/消息框来通知用户脚本的成功/失败。 (这可能是一个很高的要求,并且具有次要的重要性。)
我看过的内容:
Node.js是第一个突然出现的东西,因为我知道它有文件系统访问工具,显然是正则表达式容量。但我之前从未使用过Node,并且基于我已经阅读的教程,对于这么简单的事情来说似乎有点过分了。
有大量的" javascript编译"你可以通过谷歌搜索找到的工具。有些不是跨平台的,有些看起来很旧或没有积极维护等等。它们都没有引起我的注意,因为它很容易上手,只是写了一些JS脚本。
有什么想法吗?
答案 0 :(得分:1)
Node.js是一个简单的解决方案,使用它的框架,您可以根据需要创建或稍后修改脚本。这样您就不会被其他人的代码锁定。而且使用并不困难。 这是一个使用node.js
访问文件的快速教程http://www.sitepoint.com/accessing-the-file-system-in-node-js/
这是一个关于使用名为Cheerio的节点模块的快速教程。它允许您使用“jquery like syntax”访问html文件。您不需要使用正则表达式。
http://maxogden.com/scraping-with-node.html
我曾经为客户做过一次项目,它需要通过数百个html文件进行解析,以根据某些标准检查和替换某些图像文件。我当时不熟悉节点所以我读了一些教程并在大约一个小时内编写了脚本。
只要设置了Nodejs的路径,就可以在命令行上运行它。
答案 1 :(得分:1)
一些提示:
您需要任何类型的DOM HTML解析器,不仅仅是JS,也不是JS。
使用jTidy或jSoup库可以用Java做这件事(我曾经使用过几次)。如果你知道像Netbeans这样的JS和IDE有很多帮助,那么这是一门非常简单的学习语言。因此可以快速完成。
您可以使用PhantomJS创建一些作业文件并创建shell /批处理代码以在某些文件上运行它们。您可能需要为作业文件编写生成器(例如,获取文件列表,为每个文件创建作业文件并运行它们)。
你可以使用没有多大功能的Node.js,我相信任何解决方案都不会是微不足道的。
您可以使用例如Pentaho ETL创建一个ETL进行处理(其中JS嵌入为两种脚本语言之一...但没有DOM解析器 - 对于那个,您需要在那里使用一些Java和某些类似于this article的库。
您也可以使用PHP Simple HTML DOM Parser来实现这一点 - 这样您就可以在线(或在本地服务器上)获取这些html文件并抛出已处理的文件。
答案 2 :(得分:0)
首先,我认为你低估了复杂性。声明
"使用Go来实现这一目标是非常简单的(将文件读入内存, 正则表达式,保存到磁盘)但我是该项目的唯一成员 熟悉Go。"
可能是 false 。使用RegExp解析HTML只是一个坏主意。 (谷歌,你会明白为什么)
其次,如果您可以使用Go中的RegExps轻松编写代码,您可以轻松地在Javascript中编写相同的内容。它们都支持RegExp和文件操作。如果您不确定Javascript / Node.js的详细信息,我建议在Go中编写简单的解决方案,然后与同事将事物翻译成Javascript。
由于Javascript是一种脚本语言,因此在Node.js中编写命令行实用程序是直截了当的。
一些让你入门的指示