【问题标题】: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 数组。
谢谢!