Перейти к основному содержимому

Вспомогательные методы(utils, tools, sleep)

this.utils.*

.updateResultsData(results, data)

await this.utils.updateResultsData(results, data) - метод для автоматического заполнения $pages.$i.data и $data, необходимо вызывать для добавления контента результирующей страницы

.urlFromHTML(url, base)

await this.utils.urlFromHTML(url, base) - обрабатывает ссылку полученную из HTML кода - декодирует entities (& и т.п.), опционально можно передавать base - базовый урл (например урл исходной страницы), таким образом может быть получена полная ссылка

.url.extractDomain(url, removeDefaultSubdomain)

await this.utils.url.extractDomain(url, removeDefaultSubdomain) - метод принимает в качестве первого параметра ссылку и возвращает домен из этой ссылки. Второй необязательный параметр определяет обрезать ли из домена субдомен www. По умолчанию 0 - то есть не обрезать.

.url.extractTopDomain(url)

await this.utils.url.extractTopDomain(url) - метод принимает в качестве первого параметра ссылку и возвращает домен из этой ссылки, без субдоменов.

.url.extractTopDomainByZone(url)

await this.utils.url.extractTopDomainByZone(url) - метод принимает в качестве первого параметра ссылку и возвращает домен из этой ссылки, без субдоменов в том числе. Работает cо всеми региональными зонами

.url.extractMaxPath(url)

await this.utils.url.extractMaxPath(url) - метод принимает строку и выбирает из нее урл

.url.extractWOParams(url)

await this.utils.url.extractWOParams(url)- метод принимает ссылку и возвращает эту же ссылку обрезанную до строки параметров. То есть вернет урл до ?

.removeHtml(string)

await this.utils.removeHtml(string) - метод принимает строку и возвращает её очищенной от html тегов

.removeNoDigit(string)

await this.utils.removeNoDigit(string) - метод принимает строку, удаляет из неё все кроме цифр и возвращает результат

.removeComma(string)

await this.utils.removeComma(string) - метод принимает строку, удаляет из неё такие символы как .,\r\n и возвращает результат

.getAllBlocks(html, regexp, opts?)

await this.utils.getAllBlocks(html, regexp, opts?) - получение всех блоков на странице с соответствующими закрывающими тегами, метод принимает HTML строку и регулярное выражение, которое указывает на начало блока (любые блоки, которые имеют парные закрывающие теги, например <div>...</div>), в результате возвращается массив всех найденных блоков

Опции opts:

  • searchStartIndex - указывает индекс в строке, с которого начинать поиск, по умолчанию 0
const blocks = this.utils.getAllBlocks(html, /<div [^>]*?class="results"/)

.getAllBlocksByAttr(html, tag, attrName, attrRegExp, opts?)

await this.utils.getAllBlocksByAttr(html, tag, attrName, attrRegExp, opts?) - метод аналогичный .getAllBlocks, вместо регулярного выражения по поиску начала блока указывается название тега, название атрибута, по которому будет поиск (например id, class) и регулярное выражение, которое будет применяться к значению заданного атрибута

const blocks = this.utils.getAllBlocksByAttr(html, 'div', 'class', /results/)

await tools.*

Глобальный объект tools, позволяет получить доступ к встроенным функциям A-Parser'а

Аналог инструментов шаблонизатора $tools.*

примечание

tools.query недоступен, необходимо использовать this.query

await tools.createTemplate(string)

Позволяет использовать шаблонизатор Template Toolkit внутри JavaScript парсера.

let template = await tools.createTemplate("Hello [% content %]!")
template = typeof template == 'function' ? await template({content: 'World'}) : template
this.logger.put(template) // Output: Hello World!

Пример использования "Парсер перевода Markdown разметки в HTML"

await this.sleep(sec)

await this.sleep(sec)

Устанавливает задержку в потоке на число секунд (sec), может быть дробным.

await this.mutex.*

Мютекс для синхронизации между потоками, позволяет заблокировать секцию кода для одного потока

.lock()

Ожидание лока, исполнение продолжит первый поток, который захватил лок, остальные потоки будут ожидать освобождение лока

.unlock()

Освобождение лока, следующий поток продолжит выполнение, если он ожидал лок - .lock()

results.<array>.addElement()

Метод results.<array>.addElement() позволяет более удобно заполнять массивы в results. При его использовании не нужно помнить последовательность переменных в массиве и перечислять их вручную.

results.serp.addElement({
link: 'https://google.com',
anchor: 'Google',
snippet: 'Loreps ipsum...',
});

this.isContextAlive()

Данный метод необходим для долгоживущих потоков, которые в цикле обрабатывают запросы, позволяя корректно завершать работу при остановке или удалении задания

while (this.isContextAlive()) {
await this.request(...)
}