使用Google Apps Script的XmlService时第4行出现n.length元素类型错误
报错原因
你遇到的报错不是网站内容不兼容,是工具选型不匹配导致的:XmlService.parse() 只能解析严格符合XML语法规范的内容,而市面上绝大多数公共网站的HTML都不符合严格XML要求:包括未闭合的标签、无引号的属性、内嵌JS/CSS里的</>特殊字符等。你遇到的报错就是页面内嵌JS代码里的n.length相关内容被XmlService误识别为XML标签,触发了XML语法校验错误。
解决方案
直接用XmlService内置的HTML解析方法即可,它会自动兼容非严格的HTML语法,自动修正格式问题:
function test() { const url = 'https://www.tsa.gov/coronavirus/passenger-throughput'; const res = UrlFetchApp.fetch(url, { muteHttpExceptions: true }).getContentText(); // 替换parse为parseHtml即可解决报错 var res1 = XmlService.parseHtml(res); // 后续可以通过res1.getRootElement()获取根节点,再遍历提取表格数据 }
提取表格数据的补充提示
解析完成后可以通过getDescendants()方法获取所有节点,过滤出table标签对应的节点,再逐层遍历tr、td节点提取单元格内容即可。
内容的提问来源于stack exchange,提问作者Newbie
相关产品推荐
相关产品推荐

