在谷歌应用程序脚本中解析 html 的最佳方法是什么

2024-03-27

var page = UrlFetchApp.fetch(contestURL);
var doc = XmlService.parse(page);

上面的代码在使用时会出现解析错误,但是如果我用已弃用的 Xml 类替换 XmlService 类,并设置了 lenient 标志,它就会正确解析 html。

var page = UrlFetchApp.fetch(contestURL);
var doc = Xml.parse(page, true);

该问题主要是由于 html 的 javascript 部分中没有 CDATA 引起的,并且解析器抱怨以下错误。

The entity name must immediately follow the '&' in the entity reference.

即使我删除所有<script>(.*?)</script>使用正则表达式,它仍然抱怨,因为<br>标签没有关闭。 有没有一种干净的方法将 html 解析为 DOM 树。


我遇到了同样的问题。我能够通过首先使用已弃用的Xml.parse,因为它仍然有效,然后选择主体 XmlElement,然后将其 Xml 字符串传递到新的XmlService.parse method:

var page = UrlFetchApp.fetch(contestURL);
var doc = Xml.parse(page, true);
var bodyHtml = doc.html.body.toXmlString();
doc = XmlService.parse(bodyHtml);
var root = doc.getRootElement();

注意:如果旧的解决方案可能不起作用Xml.parse已从 Google 脚本中完全删除。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在谷歌应用程序脚本中解析 html 的最佳方法是什么 的相关文章

随机推荐

  • SqlServer -> MySQL 中的 FILESTREAM 存储等效吗?

    MySQL 版本中是否有等效项 5 5 Sql Server 中的 FILESTREAM 存储 目前来看 没有 只有BLOB CLOB等数据类型在MySQL中存储二进制数据
  • 解析 AWS Athena/AWS Glue 目录中某一列中包含换行符的 csv 文件

    我有如下示例数据 id log code sequence 100 sample lt gt lt gt O sample PILE UP 3 sample 20 7 M 101 sample 4 52 sample CM 21 7 M 1
  • Java FreeTTS 缺少语音

    我写了一个小程序 它应该简单地用 Java 进行文本到语音转换 我的班级看起来像这样 import com sun speech freetts Voice import com sun speech freetts VoiceManage
  • 排除 WCF DataContract 上的属性

    给定这样的 WCF 接口定义 是否有办法从 ComplexObject 响应值中排除属性 我想排除 ChildObjects 属性 我不想从属性定义中删除 DataMember 属性 因为我需要在另一种情况下将其序列化 ServiceCon
  • Java链表如何创建一个保存字符串和整数的节点?

    我一整天都在做这件事 我可以毫无问题地创建链接列表并显示 删除其中的数据 我的问题是 我不确定如何创建每个节点的航班链接列表 包括对乘客链接列表的引用 这是我的高级算法课上的作业 我在这里画一个空白 创建一个容纳乘客的对象 public c
  • 在 GO 中打印表格的有效方法

    我想知道一种在 Go 中打印表格的简单有效的方法 我找到的解决方案有效 但它真的很难看 非常感谢 outfile file tsv f err os Create outfile var buffer bytes Buffer buffer
  • HTML“object”标签是否有跨浏览器标准 onload 事件?

    我知道 IE 支持onreadystatechange属性上的object标签 但这似乎不是标准方式 因此所有其他浏览器都不支持它 更新 澄清一下 我不是在寻找 DOM Load 事件 而是在寻找object标签本身 例如object标签将
  • -bash:react-native:找不到命令

    我已经成功安装了brew node 4 0 watchman和flow 当我安装时我收到了以下信息npm install g react native cli Users home node bin react native gt User
  • Bower:安装后“未找到命令”

    当我执行时我似乎得到以下信息npm install bower g usr local share npm bin bower gt usr local share npm lib node modules bower bin bower
  • ADT 到 Android Studio 意外的顶级异常

    因此 我正在尝试将 Eclipse ADT 项目迁移到 Android Studio 中 我使用 appcompat v7 项目作为 eclipse 中的库项目 我按照 Android 开发网站上的说明进行操作 但仍然收到此错误 Error
  • `ejabberdctl start` 导致“内核 pid 终止”错误 - 我该怎么办?

    我用谷歌搜索了三个小时但没有结果 我有一个 ejabberd 安装 但不是使用 apt 安装的 它是从源代码安装的 其中没有名为 ejabberd 的程序 启动和停止 一切都是通过 ejabberdctl 进行的 它完美地运行了一个月 突然
  • CDN 上的 Dojo 与自己安装的 Dojo

    我使用了相当多的 Dojo 但迄今为止我仅通过包含来自 AOL Google 等 CDN 来使用它 托管 Dojo 副本而不是通过 CDN 使用它是否有优势 我没有太多需要改变代码库 但我想还有其他优点 缺点 通过托管您自己的 Dojo 环
  • Tornado 如何在任意位置提供单个静态文件?

    我正在使用 Tornado 开发一个简单的网络应用程序 它提供一些动态文件和一些静态文件 动态文件不是问题 但我在提供静态文件时遇到问题 我想做的是在访问 foo json URL 时提供文件 path to foo json 请注意 pa
  • Docker 输出中缺少层 ID

    我刚刚按照官方指南在 Ubuntu 上全新安装了 Docker https docs docker com engine installation linux ubuntulinux https docs docker com engine
  • Laravel 4 如何在视图中显示 Flash 消息?

    我正在尝试显示我的闪存消息 这是我的路由文件中的 Route post users groups save function return Redirect to users groups gt withInput gt with succ
  • RemoteServiceServlet 和 RemoteService 有什么区别?

    我知道第一个是类 第二个是接口 但重点是 为什么客户服务应该扩展远程服务并为服务实现类扩展远程服务Servlet 那么幕后到底是什么 您正在尝试比较苹果和橙子 请阅读docs https developers google com web
  • 是否有一个运算符可以作为 concatMap 但具有多个内部可观察值

    我正在使用可观察的对象来查询我的数据库 该可观察对象将返回一个数组 其中包含找到的所有匹配对象 我的问题是我想将可观察值映射到我将从另一个 API 检索的更多详细信息 我尝试了 concatMap 但它只让我在初始可观察值中嵌套 1 个可观
  • 测试互联网连接的最快方法

    C 2008 SP1 我正在使用此代码连接到我们的客户网站 这是针对软件电话应用程序的 在用户拨打电话之前 软件电话必须测试是否存在有效的互联网连接 因此 我要做的就是使用 httpWebRequest 类连接到我们的客户网站 如果响应正常
  • iPhone 电子邮件应用程序启动 URL

    在 iPhone 上启动电子邮件和开始新电子邮件的 URL 是 mailto 电子邮件受保护 cdn cgi l email protection 我只想启动电子邮件应用程序 将用户放在主菜单或收件箱中 mailto 开始撰写新的空白电子邮
  • 在谷歌应用程序脚本中解析 html 的最佳方法是什么

    var page UrlFetchApp fetch contestURL var doc XmlService parse page 上面的代码在使用时会出现解析错误 但是如果我用已弃用的 Xml 类替换 XmlService 类 并设置