Google apps script 使用Google应用程序脚本从网页中的表中提取值
我试图从一个网页中提取一个特定的值,这样我就可以把它拉到一个GoogleSheets电子表格中。问题是页面的结构不便于提取值 鉴于下面的HTML,有谁能建议一种方法,在包含“道具税”的元素之后从TD元素中提取“$4586”?页面上有很多TDs的类为“d97m50”。还有很多表的类别为“d97m2” 我尝试了以下方法,但两种方法都没有成功。对于第一个,我无法确定一种方法来迭代页面上的TDs,在包含“道具税”的TDs之后找到TD,然后从中提取文本。第二个失败了,因为我无法确定一个正则表达式可以做同样的事情Google apps script 使用Google应用程序脚本从网页中的表中提取值,google-apps-script,Google Apps Script,我试图从一个网页中提取一个特定的值,这样我就可以把它拉到一个GoogleSheets电子表格中。问题是页面的结构不便于提取值 鉴于下面的HTML,有谁能建议一种方法,在包含“道具税”的元素之后从TD元素中提取“$4586”?页面上有很多TDs的类为“d97m50”。还有很多表的类别为“d97m2” 我尝试了以下方法,但两种方法都没有成功。对于第一个,我无法确定一种方法来迭代页面上的TDs,在包含“道具税”的TDs之后找到TD,然后从中提取文本。第二个失败了,因为我无法确定一个正则表达式可以做同样
道具税:
$4,586
垃圾:
$0
停车场公司:
$0
脚趾:
$10,248
拉表的一种相当简单的方法是在工作表中使用importhtml函数,例如:
=importhtml("http://www.tradingeconomics.com/zambia/rating","table",1)
如果您可以将希望处理的HTML转换为Javascript字符串对象,那么可以使用正则表达式来标识您要处理的特定字符串 例如,给定您的测试文本:
<TABLE class="d97m2" cellSpacing=0 cellPadding=0 sizset="false" sizcache06358115873960983="276 82 150">
<!-- A bunch of other rows -->
<TR>
<TD class="d97m40"><span class="label">Prop Taxes:</SPAN></TD>
<TD class="d97m50" colSpan=2><SPAN class="wrapped-field">$4,586</span></TD>
<TD class="d97m43"><span class="label d97m29">Garbage:</SPAN></TD>
<TD class="d97m26"><SPAN class="wrapped-field">$0</span></TD>
<TD class="d97m44"><span class="label">Parking Inc:</SPAN></TD>
<TD class="d97m45"><SPAN class="wrapped-field">$0</span></TD>
<TD class="d97m46"><span class="label">TOE:</SPAN></TD>
<TD class="d97m47"><SPAN class="wrapped-field">$10,248</span></TD></TR>
<TR>
<!-- a bunch more rows -->
</TABLE>
道具税:
$4,586
垃圾:
$0
停车场公司:
$0
脚趾:
$10,248
以下正则表达式:
/.*?Prop\sTaxes(.|\s)*?d97m50.*?\$(.*?)<\/span/mg
/.*Prop\sTaxes(.|\s)*?d97m50.*.\$(.*+
'';
var qualityRegex=/.*Prop\sTaxes(.\124;\ s)*?d97m50.\$(.*)尝试了正则表达式,但一直超时。已尝试使用应用程序脚本函数和。两者都有相同的结果。我尝试的代码是:var page=UrlFetchApp.fetch(url.getContentText();var propTax=page.match(/.*Prop\sTaxes(.|\s)*d97m50.\$(*)真奇怪。它确实不起作用。因此在我修改的代码中,我通过在所有*量词后面添加问号,使它们不贪婪,现在它们起作用了。尝试该函数,看看它是否适用于您。很好的解决方法Jann。经过一点尝试和错误,找到正确的表号(页面上有30个)和一个vlookup,我能够做到这一点。不过我希望更多的是基于应用程序脚本的方法——这样我就可以简单地调用一个函数并让它返回适当的值。如果没有人提供这样的答案,我会将其标记为正确答案。
function regExTest() {
var s = '<TABLE class="d97m2" cellSpacing=0 cellPadding=0 sizset="false" sizcache06358115873960983="276 82 150">' +
'<!-- A bunch of other rows -->' +
'<TR>' +
'<TD class="d97m40"><span class="label">Prop Taxes:</SPAN></TD>' +
'<TD class="d97m50" colSpan=2><SPAN class="wrapped-field">$1,986</span></TD>' +
'<TD class="d97m43"><span class="label d97m29">Garbage:</SPAN></TD>' +
'<TD class="d97m26"><SPAN class="wrapped-field">$0</span></TD>' +
'<TD class="d97m44"><span class="label">Parking Inc:</SPAN></TD>' +
'<TD class="d97m45"><SPAN class="wrapped-field">$0</span></TD>' +
'<TD class="d97m46"><span class="label">TOE:</SPAN></TD>' +
'<TD class="d97m47"><SPAN class="wrapped-field">$10,248</span></TD></TR>' +
'<TR>' +
'<TR>' +
'<TD class="d97m40"><span class="label">Prop Taxes:</SPAN></TD>' +
'<TD class="d97m50" colSpan=2><SPAN class="wrapped-field">$4,586</span></TD>' +
'<TD class="d97m43"><span class="label d97m29">Garbage:</SPAN></TD>' +
'<TD class="d97m26"><SPAN class="wrapped-field">$0</span></TD>' +
'<TD class="d97m44"><span class="label">Parking Inc:</SPAN></TD>' +
'<TD class="d97m45"><SPAN class="wrapped-field">$0</span></TD>' +
'<TD class="d97m46"><span class="label">TOE:</SPAN></TD>' +
'<TD class="d97m47"><SPAN class="wrapped-field">$10,248</span></TD></TR>' +
'<TR>' +
'<TR>' +
'<TD class="d97m40"><span class="label">Prop Taxes:</SPAN></TD>' +
'<TD class="d97m50" colSpan=2><SPAN class="wrapped-field">$2,514</span></TD>' +
'<TD class="d97m43"><span class="label d97m29">Garbage:</SPAN></TD>' +
'<TD class="d97m26"><SPAN class="wrapped-field">$0</span></TD>' +
'<TD class="d97m44"><span class="label">Parking Inc:</SPAN></TD>' +
'<TD class="d97m45"><SPAN class="wrapped-field">$0</span></TD>' +
'<TD class="d97m46"><span class="label">TOE:</SPAN></TD>' +
'<TD class="d97m47"><SPAN class="wrapped-field">$10,248</span></TD></TR>' +
'<TR>' +
'<TR>' +
'<TD class="d97m40"><span class="label">Prop Taxes:</SPAN></TD>' +
'<TD class="d97m50" colSpan=2><SPAN class="wrapped-field">$3,312</span></TD>' +
'<TD class="d97m43"><span class="label d97m29">Garbage:</SPAN></TD>' +
'<TD class="d97m26"><SPAN class="wrapped-field">$0</span></TD>' +
'<TD class="d97m44"><span class="label">Parking Inc:</SPAN></TD>' +
'<TD class="d97m45"><SPAN class="wrapped-field">$0</span></TD>' +
'<TD class="d97m46"><span class="label">TOE:</SPAN></TD>' +
'<TD class="d97m47"><SPAN class="wrapped-field">$10,248</span></TD></TR>' +
'<TR>' +
'<!-- a bunch more rows -->' +
'</TABLE>';
var qualityRegex = /.*?Prop\sTaxes(.|\s)*?d97m50.*?\$(.*?)<\/span/mg,
matches = [];
var match = qualityRegex.exec(s);
while (match != null) {
matches.push(match[2]);
match = qualityRegex.exec(s);
}
/* Matches now contains the numbers you require */
}