Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从html正文中评估javascript文本_Javascript_Html_Node.js_Bash_Sed - Fatal编程技术网

从html正文中评估javascript文本

从html正文中评估javascript文本,javascript,html,node.js,bash,sed,Javascript,Html,Node.js,Bash,Sed,我有一个bash脚本,它使用curl下载一个页面,然后使用grep和sed将html块中的javascript提取到一个文件中,所以在它之后,我使用node评估并使用下载的javascript。 有点像: curl 'http://...' ... | grep -E "(varxpto\(|fnxpto)" | sed 's|<[/]\?script[^>]*>||g' > fn.js x="$(node -pe "var fs = require('fs'); e

我有一个bash脚本,它使用curl下载一个页面,然后使用grep和sed将html块中的javascript提取到一个文件中,所以在它之后,我使用node评估并使用下载的javascript。 有点像:

curl 'http://...' ... | grep -E "(varxpto\(|fnxpto)" | sed 's|<[/]\?script[^>]*>||g' > fn.js  
x="$(node -pe "var fs = require('fs'); eval( fs.readFileSync('fn.js')+'' ); 
var val=fnxpto('${PW}'); val;")"
curl'http://...' ... | grep-E“(varxpto\(| fnxpto)”| sed的|]*>| | g'>fn.js
x=“$(node-pe”var fs=require('fs');eval(fs.readFileSync('fn.js')+”);
var val=fnxpto('${PW}');val;“”“
它使用bash时就像一个符咒,但我需要将它作为服务公开,所以我尝试在nodejs中实现它

我的问题是…如何做到这一点?我尝试了xpath,但似乎它需要xmldoc,因为prereq和xmldoc不解析我的html(它认为它是xml专有的,而不是html)

这不是我想要的,但我也试图执行grep/sed作为解决问题的工具

注意:我已经用require('http')恢复了html文本,这里我不需要帮助。只需要从html中提取javascript并导入/评估它


有人知道如何从html中提取javascript文本脚本并在节点中对其求值吗?

您可以使用类似的方法解析html,然后查询文档中的脚本标记:

// `data` is the entire string response from `http.request()`
var cheerio = require('cheerio'),
    $ = cheerio.load(data);

$('script').each(function(i, elem) {
  console.dir($(this).text());
  // do eval() or whatever else here
});

如果xmldoc没有解析你的HTML,那么你的HTML是无效的,因此很糟糕。+niet the dark absol,是的,我知道,但是更改HTML输入是不可能的。标记中的javascript…在HTML中是有效的。我需要提取它。并评估它。只有这样。也许有一种方法可以忽略xmldoc中的无效标记?当脏HTML是你的问题时,也许吧ps整理一下?:--否则,除此之外,您真的不应该这样做,为什么不使用与bash中相同的方法并使用正则表达式来提取您想要的内容?(有很好的理由不这样做)Scheintod,我寻求简单性,我认为spawn child_进程管道控件有点混乱。这就是我想纯粹在nodejs中这样做的原因。