1. Antes de Começar

Para iniciar o programa defina a licença no começo do arquivo main.js da seguinte forma:

#LICENSE_KEY "99999-99999-99999-99999-99999"

Logo abaixo da licença são definidos os includes.

//relative to main.js 
#require "./scripts/my_script.js" 
//or 
#require "C:/scripts/my_script.js"

2. Definindo Headers de Requisição

As headers podem ser configuradas em qualquer momento durante a execução do script pois elas ficam armazenadas em um vetor no browser e são utilizadas antes de cada requisição. Ao setar uma header a header anterior será removida e só mudará quando outra header for setada no lugar, isto permite por exemplo mudar o user agent para cada site acessado sem interromper o script.

//userAgent only for request 
scrapbot.setRequestHeader('User-Agent', 'scrapbot');

3. Definindo User Agent

Define o user-agent para requisição e para o browser.

//userAgent for request and navigator 
await scrapbot.setUserAgent('scrapbot');

4. Criando um Simples Script de Autenticação

await scrapbot.geturl("http://www.website.com"); 
 
await scrapbot.selector('input#user', 5000).sendKeys('user'); 
 
await scrapbot.selector('input#password', 5000).sendKeys('password'); 
 
await scrapbot.selector('input#submit', 5000).click();

Este simples script realiza a autenticação submetendo um formulário. O método sendKeys simula o evento de teclas na região onde está o input localizado pelo selector. O método click faz a mesma coisa com evento de mouse.

Depois de preenchido e submetido, a API aguarda o carregamento da página para executar as próximas linhas. Esta espera ocorre via promise, desta forma é possível controlar a execução do script para não gerar erros. O segundo parâmetro "5000" é o tempo que o algorítmo espera até encontrar o elemento do selector, isso evita problemas causados pelo tempo de resposta do servidor. Mais detalhes sobre estes e outros métodos serão mostrado mais abaixo.

5. Navegação e Selector

Acessa uma url na internet. Todo conteúdo da página poderá ser acessado diretamente através da api scrapbot. Retorna true em caso de sucesso ou false caso ocorra algum erro.

await scrapbot.geturl("http://www.website.com"); 
//or 
await scrapbot.geturl("www.website.com");

 

Recarrega a página.

//ignoreCache: true or false. Default: false 
await scrapbot.reload(ignoreCache);

 

Pausa o script por 5 segundos.

await scrapbot.sleep(5000);

 

O selector pode ser chamado passando os seguintes argumentos:

//css selector 
await scrapbot.selector("body > div > div", timeout); 
 
await scrapbot.selector("div > div", object, timeout); 
 
await scrapbot.selector(object); 
 
//or xpath selector 
await scrapbot.selector("//body/div[1]/div[1]", timeout); 
 
await scrapbot.selector("//div[1]/div[1]", object, timeout);

No segundo método o parâmetro "object" é o contexto para selector encontrar os elementos. Por exemplo, para realizar uma busca específica dentro de um elemento já obtido pelo selector, basta passar o elemento como segundo argumento. Esta chamada deverá ser utilizada para acessar elementos dentro de iframes passando o iframe em object: await scrapbot.selector(path, iframeObject, timeout);

No terceiro método o object será o alvo de algum evento como click, sendkeys, ou outro. Neste caso, não há busca pelo selector, apenas disparo de evento em um elemento já existente.

 

Cada chamada do selector retornará um objeto contendo métodos para ações sobre a lista de elementos encontrados.


    focus: function(), 
     
    sendKeys: function(keys), 
     
    click: function(), 
     
    rightClick: function(), 
     
    //returns null if element not exists 
    get: function(index), 
     
    toArray: function(), 
     
    length: function() 
}

 

Os seguintes métodos também podem ser acessados diretamente da api sem passar pelo selector:

scrapbot.focus(x, y); 
 
scrapbot.sendKeys(x, y, keys); 
 
scrapbot.click(x, y); 
 
scrapbot.rightClick(x, y);

Neste caso, não há promise e não é necessário utilizar o "await".
O acesso direto destes métodos permite disparar eventos em regiões da página que não possuem elementos DOM como por exemplo objetos flash.

 

Retorna o tamanho do scroll da página.

scrapbot.scrollHeight();

 

Retorna a posição do scroll da página. Este método e o scrollHeight() podem ser utilizados em conjunto para rolar o scroll da página e carregar elementos dinâmicos.

scrapbot.scrollTop(y);

 

Retorna a versão do programa.

scrapbot.version();

 

Retorna um inteiro maior que 0 que representa a id da thread atual, este id é criado sequencialmente para cada instância do programa. Útil para controlar a escrita e leitura de arquivos para threads específicas.

scrapbot.getThreadId();

6. Arquivos e Diretórios

Retorna true se o arquivo existe e false caso não exista.

scrapbot.isfile(path);

 

Retorna o tamanho do arquivo em bytes. Se não existir, retorna 0.

scrapbot.filesize(path);

 

Retorna true se o diretório existe e false caso não exista.

scrapbot.isdir(path);

 

Salva um arquivo no disco.

scrapbot.savefile(file, data);

 

Lê um arquivo do disco.

scrapbot.readfile(file);

 

Copia um arquivo. Retorna true em caso de sucesso ou false caso ocorra algum erro.

scrapbot.copy(src, dst);

 

Renomeia pastas e arquivos. Retorna true em caso de sucesso ou false caso ocorra algum erro.

scrapbot.rename(old_path, new_path);

 

Remove um arquivo do disco. Retorna true em caso de sucesso ou false caso ocorra algum erro.

scrapbot.removefile(path);

 

Remove um diretório do disco. Este método remove recursivamente todos os arquivos e subdiretórios existentes e, por último, o diretório raiz. Retorna true em caso de sucesso ou false caso ocorra algum erro.

scrapbot.removedir(path);

 

Cria um diretório vazio. Retorna true em caso de sucesso ou false caso ocorra algum erro.

scrapbot.mkdir(path);

 

Retorna o diretório atual do programa.

scrapbot.getCurrentDir()

7. Downloads e Uploads

Faz o download de um arquivo da internet. Pode ser utilizado para download de PDFs, imagens, etc. Retorna true em caso de sucesso ou false caso ocorra algum erro.

await scrapbot.downloadfile(url, path);

 

Faz o upload de um ou mais arquivos. O primeiro parâmetro indica a posição do filtro de arquivos do menu dropdown que aparece na janela de upload. O segundo parâmetro é o elemento DOM do input file, este é necessário para a api setar os arquivos de upload. O último parâmetro indica os arquivos que serão enviados. ScrapBot checará se cada arquivo existe, caso não exista ou ocorra algum erro, será disparada uma exception.

//upload multiple files 
await scrapbot.setFileUpload(0, inputFileDom, [".\\relative_path\\test.text", "C:\\test.txt", "C:\\test_2.txt", "C:\\test_3.txt"]); 
 
//upload single file 
await scrapbot.setFileUpload(0, inputFileDom, ["C:\\test.txt"]); 
//or 
await scrapbot.setFileUpload(0, inputFileDom, "C:\\test.txt");

8. Proxy

Este método define a configuração proxy para requisições. Pode ser chamado a qualquer momento e persistirá até a próxima mudança de configuração ou até o proxy ser desativado.

//enable proxy 
scrapbot.setProxy('http://host:port'); 
 
//disable proxy 
scrapbot.setProxy(false);

9. Executar Programas Externos

Este método pode executar qualquer programa ou qualquer comando do sistema. Não retorna nenhum valor e não aguarda uma resposta.

//program, directory, arguments, hidden 
scrapbot.shellexecute('notepad.exe', null, null, false);

10. Recuperar Objeto Window

Retorna o objeto window da página.

scrapbot.getWindow();

11. Captura de Tela

Captura uma região da página e salva em um arquivo.

//x, y, width, height, scale, path 
await scrapbot.screenshot(0, 0, 500, 500, 1, ".\\image.jpg");

12. Recuperar Código Fonte em String

Retorna o código fonte da página ou texto.

//with html 
await scrapbot.getsource(); 
 
//only text 
await scrapbot.gettext();

13. Sessão

Limpar dados de sessão.

//clear cache 
await scrapbot.clearBrowserCookies(); 
 
//clear cookies 
await scrapbot.clearBrowserCache();

 

Manipulação de cookies.

//return array of cookie objects 
await scrapbot.getAllCookies(); 
 
//cookies: array of cookie objects 
await scrapbot.setCookies(cookies);

Objeto cookie:


    name, //string - Cookie name. 
     
    value, //string - Cookie value. 
     
    domain, //string - Cookie domain. 
     
    path, //string - Cookie path. 
     
    expires, //number - Cookie expiration date as the number of seconds since the UNIX epoch. 
     
    httpOnly, //boolean - True if cookie is http-only. 
     
    secure, //boolean - True if cookie is secure. 
     
    session //boolean - True in case of session cookie. 
}

14. Caminhos Absolutos e Relativos

Os método referentes a manipulação no sistema de arquivos podem funcionar com caminho absoluto ou caminho relativo ao main.js. Uma chamada para salvar um arquivo poderá ser feita da seguinte forma:

//relative to main.js 
scrapbot.savefile('./test.txt', 'Hello World!'); 
 
//absolute path 
scrapbot.savefile('C:/documents/test.txt', 'Hello World!');