我有一个使用curl下载页面的bash脚本,然后使用grep和sed将html block 内的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;")"
它就像使用 bash 的魅力一样。但我需要将其公开为服务,因此我尝试在 Nodejs 中执行此操作。
我的问题是...该怎么做?我尝试了 xpath,但似乎它需要 xmldoc,因为先决条件和 xmldoc 不解析我的 html(它认为它是 xml 独有的,而不是 html)。
不是我想要的,但我也尝试执行 grep/sed 作为我的问题的解决方法。
注意:我使用 require('http') 恢复了 html 文本,我在这里不需要帮助。仅从 html 中提取 javascript 并导入/评估它。
有人知道如何从 html 中提取 javascript 文本脚本并在 Node 中对其进行评估吗?
最佳答案
您可以使用类似 cheerio
的内容解析 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
});
关于javascript - 评估 html 正文中的 javascript 文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27280249/