Как ускорить парсинг страницы phantom?

108
23 октября 2019, 12:30
const phantom = require('phantom');

async function pars2gis(url) {
  var Globalresult;
  const instance = await phantom.create();
  const page = await instance.createPage();
  const status = await page.open(url);
  await page.evaluate(function() {
    var PARSfirmName = document.getElementsByClassName('cardHeader__headerNameText'),
    PARSphone, PARSphones = [], PARSaddress, result = {};
    if (PARSfirmName.length > 0) {
      PARSphone = document.getElementsByClassName('contact__phonesItemLinkNumber');
      for (var x = 0; x < PARSphone.length; x++) {
        if ( x > 0 ) {
          PARSphones.push(PARSphone[x].innerHTML);
        }
      }
      PARSaddress = document.getElementsByClassName('card__addressLink')[0].innerHTML;
      result = {
        firmName: PARSfirmName[0].innerHTML,
        contactPhones: PARSphones,
        address: PARSaddress
      }
      return result;
    }
    //Начало второго блока
    PARSfirmName = document.getElementsByClassName('mediaCardHeader__cardHeaderName');
    PARSphone = document.getElementsByClassName('mediaContacts__phonesNumber');
      for (var x = 0; x < PARSphone.length; x++) {
        if ( x > 0 ) {
          PARSphones.push(PARSphone[x].innerHTML);
        }
      }
      PARSaddress = document.getElementsByClassName('mediaCardHeader__cardAddressName')[0]
        .innerHTML.replace(/&nbsp;/g, '');
      result = {
        firmName: PARSfirmName[0].innerHTML,
        contactPhones: PARSphones,
        address: PARSaddress
      }
      return result;
  }).then(function(data){
    console.log(data);
    return Globalresult = data;
  });
  await instance.exit();
  return Globalresult;
};

Есть функция, выполнение ее занимает примерно 5 секунд. Эта функция получает ссылку на страницу, далее выполняются встроенные методы phantom. Как можно его ускорить?

READ ALSO
Почему не наследуется конструктор?

Почему не наследуется конструктор?

Есть 2 функции конструкторов, прототип 1-ой функции-конструктора наследуется через Objectcreate, но в качестве прототипа ошибочно указан не объект(прототип),...

129
Расширить EventTarget, без синтаксиса &ldquo;class&rdquo;

Расширить EventTarget, без синтаксиса “class”

Как я могу записать аналог class MyClass extends EventTarget{}, без использования синтаксиса "class"? В спецификации сказано что это только синтаксический сахар,...

125
Как добавить/удалить класс в куки?

Как добавить/удалить класс в куки?

Пожалуйста, подскажите, как можно при: добавлении, удаление классов (при toggleClass например) сохранять результат после перезагрузки страницыЯ...

128
Вывести массив коротким образом в String

Вывести массив коротким образом в String

Есть массив,числа это типа номера маршруток на данном улицеЧисла идут только на возрастание и по порядку

114