node.js - 如何从html中获取具有值的脚本标签
问题描述
我正在使用 nodejs 开发 lambda 函数。在其中我点击了一个返回 http 响应的 http url。这个响应包含很少的脚本标签,我想得到它。
const https = require('https')
// const json = require('json')
let url = "https://test.com"
exports.handler = async function(event) {
const promise = new Promise(function(resolve, reject) {
https.get(url, (res) => {
resolve(res.statusCode)
console.log('HEADERS: ' + JSON.stringify(res.headers));
res.setEncoding('utf8');
res.on('data', function (chunk) {
console.log('###############################################');
console.log('BODY: ' + chunk);
});
}).on('error', (e) => {
reject(Error(e))
})
})
return promise
}
它返回类似下面的代码。
<meta property="fb:pages" content="400601983320296">
<link href="https:/test,minify-1.cms" type="text/css" rel="stylesheet">
<script type="text/javascript">
var isAdaptive = '1', isPremium = '';
</script>
<script>
var arrArticleList = [1,2,3,4,5,6,7,8,9,10];
var arrPromoList = [];
</script>
我想在不使用任何 npm 模块的情况下从响应中提取此脚本标记。因为我直接在 lambda 控制台上开发代码。
谢谢
解决方案
这是我的实现(您也可以使用 Regex 代替这种方法):
const https = require('https')
let url = "https://test.com"
async function t() {
const promise = new Promise(function(resolve, reject) {
https.get(url, (res) => {
resolve(res.statusCode)
console.log('HEADERS: ' + JSON.stringify(res.headers));
res.setEncoding('utf8');
res.on('data', function (chunk) {
console.log('###############################################');
// get scripts
let s = chunk
const scripts = [];
while (s.indexOf("<script") != -1 && s.indexOf("</script>") != -1) {
let f = s.indexOf("<script");
let l = s.indexOf("</script>")+9;
scripts.push(s.slice(f, l))
s = s.slice(l)
}
console.log(scripts)
//
});
}).on('error', (e) => {
reject(Error(e))
})
})
return promise
}
推荐阅读
- javascript - Mermaid.js 与 Node.js - 动态生成
- mongodb - 在所有文档的所有字段中应用大写(MongoDB - 聚合)
- c# - 使用数据库连接创建 C# 表单的 Exe
- java - 运行程序时未显示文本文件的内容
- php - 如何在从谷歌地图获取的 php MySQL 中存储多边形的坐标
- python - 为什么json文件没有在我的程序中打开?
- hibernate - 如何在本机查询中访问子类实体字段?
- flask - 为什么我的服务器抱怨“错误的授权标头”?
- git - 是否可以将更改拉/推到在另一台 PC 上克隆的 Git 存储库?
- android - 从 Android 手机设置中的 24 小时格式更改后,gson 无法反序列化日期时间