我正在尝试解析 Googlescript 脚本中的页面,以便获取位于 的表格列表
“https://stihi.ru/readers.html?vlassoff&start=0”
但是脚本给出了错误
ReferenceError:DOMParser 未定义
双子座告诉我的
当您尝试使用 DOMParser 对象但它在当前环境中不可用时,会出现错误 ReferenceError: DOMParser is not Defined。发生这种情况有以下几个原因:
您正尝试在未在网络上下文中运行的 Google Apps 脚本中使用 DOMParser。例如,您不能在工作表编辑器中运行的脚本中使用 DOMParser。 以下是修复错误 ReferenceError: DOMParser is not Defined 的一些方法:
如果您尝试在 Google Apps 脚本中使用 DOMParser:
您可以使用 HtmlService 类确保您的脚本在 Web 上下文中运行。例如,您可以创建一个 Web 应用程序,然后从该 Web 应用程序调用您的脚本。
我的代码:
function countTablesInHTMLDoc(url) {
var htmlString = UrlFetchApp.fetch(url).getContentText();
var parser = new DOMParser();
var doc = parser.parseFromString(htmlString, "text/html");
var tables = doc.getElementsByTagName("table");
var tableCount = tables.length;
return tableCount;
}
function exampleUsage() {
var url = "https://stihi.ru/readers.html?vlassoff&start=0";
var tableCount = countTablesInHTMLDoc(url);
Logger.log("Количество таблиц в документе по ссылке " + url + ": " + tableCount);
}
“DOMParser”不是预先集成的 Apps 脚本类。有关所有可用 Apps 脚本类的全面说明,请查看这篇 Google 开发者文章。
作为解决方法,您可以尝试使用字符串拆分方法来计算“table”元素在原始 HTML 字符串中出现的次数。
请找到以下代码:
function myFunction() {
var htmlString = UrlFetchApp.fetch("https://stihi.ru/readers.html?vlassoff&start=0").getContentText()
let numberOfTables = htmlString.split("</table").length - 1;
console.log(numberOfTables);
}
这里 split 方法将在表的结束标记的每次迭代时中断字符串,并使用每个字符串创建一个数组,因此我们可以使用 length -1 来查找该字符串出现的次数。希望这有帮助!