您可以使用 Java UDF 和 jsoup 在 SQL 中解析 HTML。
第一个 PUT jsoup.jar 使用 SnowSQL:
put 'file:///Users/fhoffa/Downloads/jsoup-1.13.1.jar' @~;
然后你可以为它创建一个Java UDF。
例如,从 HTML 中提取文本:
create or replace function jsoup_text(x string)
returns string
language java
imports = ('@~/jsoup-1.13.1.jar')
handler='MyClass.text'
as
$$
import org.jsoup.Jsoup;
class MyClass {
public static String text(String x) {
return Jsoup.parse(x).text();
}
}
$$;
可以这样调用:
select jsoup_text('This is a <strong>strong</strong> number <date>2013</date>');
返回没有任何 HTML 额外元素的文本。
或从文档中提取所有链接 URL:
create or replace function jsoup_all_links(x string)
returns array
language java
imports = ('@~/jsoup-1.13.1.jar')
handler='MyClass.extractLinks'
as
$$
import org.jsoup.Jsoup;
class MyClass {
public static String[] extractLinks(String x) {
return Jsoup.parse(x)
.select("a[href]")
.stream().map(s -> s.attr("abs:href"))
.toArray(String[]::new);
}
}
$$;
它已经准备好工作了:
select jsoup_all_links('The best <a href="http://snowflake.com">Snowflake</a> <a href="https://reddit.com/r/snowflake">subreddit</a>');
返回数组["http://snowflake.com", "https://reddit.com/r/snowflake"]。
阅读更多: