【问题标题】:Pure javascript HTML parser for use in a BigQuery UDF用于 BigQuery UDF 的纯 javascript HTML 解析器
【发布时间】:2020-04-25 16:00:00
【问题描述】:

我正在寻找一个纯 JavaScript 不依赖于浏览器的 HTML 解析器。如果它支持通过 XPATH 或 CSS 选择器查找元素,则会得到奖励。我想在 BigQuery UDF 中使用它,这样我就可以处理数据中的 HTML 字段,但问题是许多这些库(可以理解)调用浏览器 API 来完成繁重的工作。对于 BQ UDF,没有浏览器。我需要这一切都发生在 JS 中。

【问题讨论】:

标签: javascript parsing google-bigquery user-defined-functions


【解决方案1】:

在查看了@GUNNM 的建议后,我使用该库相当轻松地完成了一些工作:

CREATE TEMP FUNCTION parseHTML(html STRING)
      RETURNS STRING
      LANGUAGE js
      OPTIONS (
        library=["gs://my-bq-udf/htmlparser.js"]
      )
      AS
    """
    captions = []
    elementSelected = false
    HTMLParser(html, {
      start: function( tag, attrs, unary ) {
        if (tag == "div") {
          for (var i = 0; i < attrs.length; i++) {
             if (attrs[i].name == "class" && attrs[i].value.indexOf("caption") > -1) {
                elementSelected = true
                return
             }
          }
        }
      },
      end: function( tag ) { 
        elementSelected = false
      },
      chars: function( text ) {  
        if (elementSelected) {
          captions.push(text)
        }
      },
      comment: function( text ) {  }
    });
    return captions.join("|")
"""

这是一个简化的示例,但它展示了如何将其加载为外部 UDF,并使用回调、访问和结构化 HTML 的不同部分。我正在使用 class== "caption" 构建一个 div 数组。

谢谢!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-02
    • 2016-02-01
    • 2013-03-26
    相关资源
    最近更新 更多