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

Вспомогательные методы(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(...)
}