Pular para o conteúdo principal

Métodos auxiliares(utils, tools, sleep)

this.utils.*​

.updateResultsData(results, data)​

await this.utils.updateResultsData(results, data) - método para preenchimento automático de $pages.$i.data e $data, deve ser chamado para adicionar conteúdo à página de resultados

.urlFromHTML(url, base)​

await this.utils.urlFromHTML(url, base) - processa um link obtido do código HTML - decodifica entities (& etc.), opcionalmente pode-se passar base - a URL base (por exemplo, a URL da página de origem), permitindo obter o link completo

.url.extractDomain(url, removeDefaultSubdomain)​

await this.utils.url.extractDomain(url, removeDefaultSubdomain) - o método recebe um link como primeiro parâmetro e retorna o domínio desse link. O segundo parâmetro opcional determina se deve remover o subdomínio www do domínio. Por padrão é 0 - ou seja, não remover.

.url.extractTopDomain(url)​

await this.utils.url.extractTopDomain(url) - o método recebe um link como primeiro parâmetro e retorna o domínio desse link, sem subdomínios.

.url.extractTopDomainByZone(url)​

await this.utils.url.extractTopDomainByZone(url) - o método recebe um link como primeiro parâmetro e retorna o domínio desse link, inclusive sem subdomínios. Funciona com todas as zonas regionais

.url.extractMaxPath(url)​

await this.utils.url.extractMaxPath(url) - o método recebe uma string e extrai uma URL dela

.url.extractWOParams(url)​

await this.utils.url.extractWOParams(url)- o método recebe um link e retorna o mesmo link cortado até a string de parâmetros. Ou seja, retornará a URL antes do ?

.removeHtml(string)​

await this.utils.removeHtml(string) - o método recebe uma string e a retorna limpa de tags HTML

.removeNoDigit(string)​

await this.utils.removeNoDigit(string) - o método recebe uma string, remove tudo exceto dígitos e retorna o resultado

.removeComma(string)​

await this.utils.removeComma(string) - o método recebe uma string, remove caracteres como .,\r\n e retorna o resultado

.getAllBlocks(html, regexp, opts?)​

await this.utils.getAllBlocks(html, regexp, opts?) - obtém todos os blocos na página com as respectivas tags de fechamento, o método recebe uma string HTML e uma expressão regular que indica o início do bloco (quaisquer blocos que possuam tags de fechamento correspondentes, por exemplo <div>...</div>), retornando um array com todos os blocos encontrados

Opções opts:

  • searchStartIndex - indica o índice na string a partir do qual iniciar a busca, por padrão 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?) - método semelhante ao .getAllBlocks, mas em vez de uma expressão regular para buscar o início do bloco, especifica-se o nome da tag, o nome do atributo para a busca (por exemplo id, class) e uma expressão regular que será aplicada ao valor do atributo definido

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

await tools.*​

Objeto global tools, permite acessar as funções integradas do A-Parser

Análogo às ferramentas do motor de modelos $tools.*

nota

tools.query não está disponível, deve-se usar this.query

await tools.createTemplate(string)​

Permite usar o motor de modelos Template Toolkit dentro do scraper JavaScript.

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

Exemplo de uso "Scraper para tradução de marcação Markdown para HTML"

await this.sleep(sec)​

await this.sleep(sec)

Define um atraso na thread por um número de segundos (sec), podendo ser fracionário.

await this.mutex.*​

Mutex para sincronização entre threads, permite bloquear uma seção de código para uma única thread

.lock()​

Aguardar o lock, a execução continuará na primeira thread que capturou o lock, as outras threads aguardarão a liberação do lock

.unlock()​

Liberação do lock, a próxima thread continuará a execução se estiver aguardando o lock - .lock()

results.<array>.addElement()​

O método results.<array>.addElement() permite preencher arrays em results de forma mais conveniente. Ao usá-lo, não é necessário lembrar a sequência das variáveis no array nem listá-las manualmente.

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

this.isContextAlive()​

Este método é necessário para threads de longa duração que processam consultas em um loop, permitindo encerrar o trabalho corretamente ao parar ou excluir a tarefa

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