Парсер Pure javascript HTML для использования в UDF BigQuery - PullRequest
0 голосов
/ 25 апреля 2020

Я ищу чистый javascript не зависящий от браузера HTML парсер. Бонус, если он поддерживает поиск элементов с помощью селекторов XPATH или CSS. Я хочу использовать это в пользовательском интерфейсе BigQuery, чтобы я мог изменять поля HTML в своих данных, но проблема в том, что многие из этих библиотек (по понятным причинам) делают вызовы API-интерфейсов браузера для выполнения тяжелой работы. Для BQ UDF нет браузера. Мне нужно, чтобы все произошло в JS.

1 Ответ

1 голос
/ 27 апреля 2020

Посмотрев на предложение @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. Я создаю массив div с классом == "заголовок".

Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...