我正在从此网址提取HTML。我对以下两行感兴趣:
<meta name="SAC:price" content="444000">
<meta name="SAC:published" content="2020-03-28 11:06:22">
我想提取这两行的内容值。在这个例子中,我需要的输出是:
[444000,2020-03-28 11:06:22]
最简单的方法是什么?这是我到目前为止尝试过的:
function myFunction() {
var url = "https://asunnot.oikotie.fi/myytavat-asunnot/helsinki/15597485"
var str = UrlFetchApp.fetch(url).getContentText();
let r = /ce" content="(\d{6})">|hed" content="(.*)">/g,out=[];
let arr = [...str.matchAll(r)]; //[[ce" content="444000">, 444000, null], [hed" content="2020-03-28 11:06:22">, null, 2020-03-28 11:06:22]]
for(a of arr){
a.shift();
(a[0])?out.push(a[0]):out.push(a[1]);
}
Logger.log(out); //[444000, 2020-03-28 11:06:22]
}
这似乎过于繁琐,有更好的选项吗?我不介意如何实现(正则表达式或其他方法),只要能以最简单的方式一致地获取这两个字段的内容。
感谢Wiktor Stribiżew的贡献,最终解决方案:
function myFunction() {
var url = "https://asunnot.oikotie.fi/myytavat-asunnot/helsinki/15597485"
var str = UrlFetchApp.fetch(url).getContentText();
let r = /(?<=ce" content=")\d{6}(?=">)|(?<=hed" content=").*(?=">)/g;
let arr = str.match(r);
Logger.log(arr); //[444000, 2020-03-28 11:06:22]
}
let r = /(?<=ce" content=")\d{6}(?=">)|(?<=hed" content=")[^"]*(?=")>/g;
- Wiktor Stribiżew(?=")>
处),它应该是let r = /(?<=ce" content=")\d{6}(?=">)|(?<=hed" content=")[^"]*(?=">)/g
。 - Wiktor Stribiżew