用于 BigQuery UDF 的纯 javascript HTML 解析器
Posted
技术标签:
【中文标题】用于 BigQuery UDF 的纯 javascript HTML 解析器【英文标题】:Pure javascript HTML parser for use in a BigQuery UDF 【发布时间】:2020-04-25 16:00:00 【问题描述】:我正在寻找一个纯 javascript 不依赖于浏览器的 html 解析器。如果它支持通过 XPATH 或 CSS 选择器查找元素,则会得到奖励。我想在 BigQuery UDF 中使用它,这样我就可以处理数据中的 HTML 字段,但问题是许多这些库(可以理解)调用浏览器 API 来完成繁重的工作。对于 BQ UDF,没有浏览器。我需要这一切都发生在 JS 中。
【问题讨论】:
看这里:johnresig.com/blog/pure-javascript-html-parser 【参考方案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 数组。
谢谢!
【讨论】:
以上是关于用于 BigQuery UDF 的纯 javascript HTML 解析器的主要内容,如果未能解决你的问题,请参考以下文章
用于合并值列表/数组的 BigQuery JavaScript UDF