【问题标题】:Unable to use getElementsByTagName("body")无法使用 getElementsByTagName("body")
【发布时间】:2017-01-07 06:13:50
【问题描述】:

这是我每次运行时都会导致错误的代码。我的目标是从 URL 中删除内容,删除所有 HTML,然后返回:

console.log("Fetching: " + inputData.tweeturl);
fetch(inputData.tweeturl)
  .then(function(res) {
    return res.text();
  }).then(function(body) {
    var rawText = body.getElementsByTagName("body")[0].innerHTML;
    var output = { id: 100, rawHTML: body, rawText: rawText };
    callback(null, output);
  })
  .catch(callback);

问题在于var rawText = body.getElementsByTagName("body")[0].innerHTML;

我收到的错误是:

讨价还价。我们在创建运行 JavaScript 时遇到错误。 :-( 错误: TypeError: body.getElementsByTagName 不是函数 eval (eval at (/var/task/index.js:52:23), :16:24) process._tickDomainCallback (node.js:407:9)

【问题讨论】:

  • 我不知道zapier,但从堆栈跟踪看来,它只是无法识别该函数。您可以使用 Phantom.js 等无头浏览器从 Node.js 执行客户端 JS,zapier 是等价的吗?
  • 不幸的是,脚本环境仅限于他们提供的内容。 Phantom.js 或任何其他 npm 包是不可能的。

标签: node.js zapier


【解决方案1】:

不幸的是,Zapier 触发器或操作的代码中没有 JS DOM API(这是因为它没有在浏览器中运行,也没有安装必要的库来伪造它)。

您可能会查看 Python 和 https://docs.python.org/2/library/xml.etree.elementtree.html。体面的问题和答案可在此处Python Requests package: Handling xml response 获得。祝你好运!

【讨论】:

    【解决方案2】:

    Zapier 不支持的任何函数都会导致 TypeError。我需要使用正则表达式来实现这一点。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-10-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-20
      • 1970-01-01
      • 1970-01-01
      • 2021-08-18
      相关资源
      最近更新 更多