【问题标题】:Parsing HTML files from Google Drive (not from a webpage) using Google Script使用 Google Script 从 Google Drive(而不是网页)解析 HTML 文件
【发布时间】:2017-11-08 22:37:11
【问题描述】:

我将我妻子的所有食谱都存储在 Paprika 中。我想做的一件事是将整个食谱数据库导出到电子表格中。 Paprika 只导出两种格式:一种是它自己的专有 .paprika 格式,人类不可读。另一种是一系列 .html 文件。 HTML 文件包含 hrecipe 元数据,所以我希望我可以利用它来提取必要的信息。

我认为遍历文件集并提取我需要的所有信息的最佳方法是将它们放入 Google Drive 文件夹并使用 Google 表格和脚本来提取必要的信息。

所以我的问题是:是否可以使用 Google 脚本从配方 HTML 文件中提取必要的信息? Google Script 有一个 HTML 解析器,可以查看现有网页并从中提取信息,但我似乎无法使用实际的 HTML 文件而不是已发布的网页。

任何建议或帮助将不胜感激。

【问题讨论】:

  • Google Apps 脚本绝对可以访问和解析用户云端硬盘中的文件。但这可能并不容易或直接。看起来 Drive Service API (developers.google.com/apps-script/reference/drive) 可能是您想要的。
  • 感谢您的链接。我一直在研究文档,但还没有找到任何东西,但我会继续挖掘它。我绝对是这方面的新手,但我之前创建了一些工作脚本。

标签: javascript scripting google-sheets google-drive-api


【解决方案1】:

这个方法怎么样?使用 DriveApp,您可以从 Google Drive 上的 HTML 文件中检索数据。我认为从 HTML 文件中检索数据有两种模式。对于此示例,以下 HTML 用作示例 HTML。

示例 HTML:

此示例 HTML 已放在 Google Drive 上。

<html>
  <body>
    <a href="https://www.google.com/">Google</a>
  </body>
</html>

模式一:

如果 XmlService 可用于您的 HTML 文件,则可以使用此脚本。

var fileId = "### file ID of HTML ###";
var html = DriveApp.getFileById(fileId).getBlob().getDataAsString(); // Retrieve data from HTML file as string.

var data = XmlService.parse(html).getRootElement().getChild('body');
var url = data.getChild('a').getAttribute("href").getValue();
var value = data.getChild('a').getValue();
Logger.log("URL: %s, Value: %s", url, value);

模式二:

如果 XmlService 不能用于您的 HTML 文件,您可以使用库“Parser”检索数据。示例脚本如下。

var fileId = "### file ID of HTML ###";
var html = DriveApp.getFileById(fileId).getBlob().getDataAsString(); // Retrieve data from HTML file as string.

var url = Parser.data(html).from('<a href="').to('">').build();
var value = Parser.data(html).from('<a href="'+ url + '">').to('</a>').build();
Logger.log("URL: %s, Value: %s", url, value);

两个结果都是URL: https://www.google.com/, Value: Google

参考资料:

如果我误解了你的问题,我很抱歉。

【讨论】:

  • @Jody Lane 我的回答有用吗?你能告诉我吗?这对我学习也很有用。如果这样可行,与您有相同问题的其他人也可以将您的问题作为可以解决的问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-16
相关资源
最近更新 更多