【发布时间】:2022-01-01 15:00:23
【问题描述】:
我正在使用 Google 应用脚本在 Google 表格中创建一个应用。该应用程序抓取网页并将 HTML 页面作为字符串返回给我。我正在尝试将其插入 DOM,以便我可以使用 DOM 查询在页面中查找我需要的数据。通常,您可以使用document.createDocumentFragment() 创建一个文档片段,或者使用document.createElement() 创建一个分离的元素,然后使用HTML 字符串设置innerHTML。问题是,GAS 没有 document 上下文。
有没有人有解决方法的想法,或者可能有其他方法来查询大文本字符串?
附言我的第一直觉是找到我需要的 API 作为数据,但我找不到任何满足我需求的东西。屏幕抓取是我最后的手段。
更新:感谢您发现并标记了类似问题。 GS 的 Cheerio 库是正确的解决方案。 https://stackoverflow.com/a/61928025/735374
【问题讨论】:
-
Google 应用程序脚本在服务器上而不是在浏览器上运行,因此没有 DOM。只要您的 html 没有格式错误,您就可以尝试使用 XMLService。当然,我不知道您要完成什么,但如果我想使用 DOM 查询来查找我更喜欢使用 sn-ps 并捕获数组中的数据并存储在 localStorage 中的东西。我可以轻松地将数据以标准的 javascript 格式取出,然后以 JSON 或 javascript 易于读取的格式粘贴到文件中。
-
你能解释一下当你说“我试图将它插入到 DOM 中”时你的意思吗?什么 DOM?你在创建HtmlService object吗?
-
感谢@Cooper 的建议。我需要在 GAS 中执行此操作,因为屏幕抓取只是一个更大的应用程序的一部分,所有这些都以编程方式完成。片段仅作为小规模的手动运行代码有用。
-
嗨@Ihopethisishelpfultoyou,我希望创建一个分离的DOM,然后我可以使用querySelector等方法来导航HTML文档。我知道这是服务器端 JS,这基本上就是问题所在 - 如果有一种方法可以创建一个不存在的 DOM。
-
为什么不只使用 importxml 和 xpath ?
标签: javascript google-apps-script google-sheets dom