Разберите специфику c строку из переменной HTML результат - PullRequest
2 голосов
/ 21 апреля 2020

Я запускаю скрипт, который возвращает HTML в следующем формате в переменную (т. Е. Var results;)

var results = titleResults[0];
return results;

***RETURNS the below***
<h2>
<a href="https://www.southwest.com/about/southwest/index.html"><b>About Southwest</b></a>
</h2>

Как я могу разобрать только 'southwest.com' в другой переменная

Ответы [ 4 ]

2 голосов
/ 21 апреля 2020

[РЕДАКТИРОВАТЬ] Полный код скрипта приложений здесь:

  var html = '<h2><a href="https://www.southwest.com/about/southwest/index.html"><b>About Southwest</b></a></h2>';
  var doc = XmlService.parse(html);
  var root = doc.getRootElement();
  var children = root.getDescendants(); 
  children.forEach(function(ch){
    var chelm = ch.asElement();
    if(chelm && chelm.getAttribute('href'))
    {
      var href = chelm.getAttribute('href');
      var url = href.getValue();
      Logger.log(url);

      var hostname;
      if (url.indexOf("//") > -1)
          hostname = url.split('/')[2];
      else
          hostname = url.split('/')[0];
      hostname = hostname.split('://').pop();   
      hostname = hostname.split('www.').pop();
      hostname = hostname.split('?')[0];
      Logger.log(hostname);
    }
  });

Вы можете использовать XmlService.parse в скрипте приложений и получить атрибут узла ссылки & href: https://sites.google.com/site/scriptsexamples/learn-by-example/parsing-html

Из атрибута href вы можете извлечь домен:

var hostname;
if (url.indexOf("//") > -1)
    hostname = url.split('/')[2];
else
    hostname = url.split('/')[0];

hostname = hostname.split('://').pop();
hostname = hostname.split('www.').pop();
hostname = hostname.split('?')[0];
1 голос
/ 21 апреля 2020

var results = `<h2>
<a href="https://www.southwest.com/about/southwest/index.html"><b>About Southwest</b></a>
</h2>`


//Getting southwest.com :

let southwest = results.split("www.")[1].split("/")[0]
//this method works for all urls,
let example = "http://www.example.com/index.html".split("www.")[1].split("/")[0]

console.log(southwest,"\n",example)
1 голос
/ 21 апреля 2020

Я не совсем уверен, если это будет делать это для скрипта приложения Google, но с помощью Javascript вы можете извлечь то, что вам нужно, как это :

  1. Вы можете используйте эту строку result как innerHTML нового элемента HTML.
  2. Затем извлеките значение атрибута href из элемента a.
  3. И, наконец, используйте регулярное выражение как \/\/(www\.)?([\w\.]+)\/? и .match() метод для извлечения желаемого результата.

Это как должен быть ваш код:

var div = document.createElement("div");
div.innerHTML= result;
let href = div.getElementsByTagName("a")[0].href;
console.log(href.match(/\/\/(www\.)?([\w\.]+)\/?/)[1]);

Демо:

let result = `<h2>
<a href="https://www.southwest.com/about/southwest/index.html"><b>About Southwest</b></a>
</h2>`;
var div = document.createElement("div");
div.innerHTML= result;
let href = div.getElementsByTagName("a")[0].href;
console.log(href.match(/\/\/(www\.)?([\w\.]+)\/?/)[2]);

Ссылки:

0 голосов
/ 21 апреля 2020

создать функцию

const extractDomain = url =>
{
    let domain

    domain = url.split('/')[url.indexOf("://") > -1 ? 2 : 0]

    if (domain.indexOf("www.") > -1)
        domain = domain.split('www.')[1]

    domain = domain.split(':')[0];
    domain = domain.split('?')[0];

    return domain
}
<h2>
    <a href="https://www.southwest.com/about/southwest/index.html" id="url"><b>About Southwest</b></a>
</h2>
const {href} = document.getElementById('url')

const anotherVariable = extractDomain(href)

теперь другая переменная "southwest.com"

DEMO: https://jsfiddle.net/cs6bzgfn/

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