Ótimo guia de aprendizado da classe de navegador de marionetes (Tutorial 8)

Puppeteer é uma biblioteca node js de código aberto e é usada como uma ferramenta de automação da web e também de web scraping. Você precisa do conhecimento básico de Javascript e da estrutura HTML DOM para começar a trabalhar com o Puppeteer. Esta série de tutoriais do Puppeteer é distribuída nos segmentos abaixo, os quais irão equipá-lo com toda a experiência necessária para começar a trabalhar com o Puppeteer. 

Tutorial do Titereiro

Tutorial Tosca # 1: Visão geral do titereiro

Tutorial Tosca # 2: Variáveis ​​de ambiente do titereiro

Tutorial Tosca # 3: Visão geral da criação da Web do Puppeteer e da automação do teste do Puppeteer

Tutorial Tosca # 4: Instale o Puppeteer

Tutorial Tosca # 5: Exemplo de projeto de titereiro

Tutorial Tosca # 6: Teste de automação de titereiro

Tutorial Tosca # 7: Aula de titereiro

Tutorial Tosca # 8: Classe de navegador Puppeteer

Tosca Tutorial Nº 9: Classe da página do marionetista

Neste tutorial de “Classe de navegador do Puppeteer”, teremos um entendimento mais profundo sobre as classes mencionadas abaixo, que consistem em namespaces importantes, eventos e outros métodos exaustivos que são necessários para trabalhar com técnicas de web scraping do Puppeteer.  

Marionetista Classe BrowserFetcher

A classe Puppeteer BrowserFetcher é usada para baixar e gerenciar as diferentes versões do navegador. A classe BrowserFetcher opera em uma string de revisão que especifica a versão do navegador Chrome. O número da revisão pode ser obtido em SUA PARTICIPAÇÃO FAZ A DIFERENÇA. No caso do Firefox, ele baixa o navegador todas as noites com base no número da versão.

O exemplo abaixo mostra como baixar e inicie o navegador chrome usando a classe BrowserFetcher.

const browserFetcher = manipulador de marionetes.createBrowserFetcher(); const revInfo = await browserFetcher.download('766890'); const browserChrome= await puppeteer.launch({executablePath: revInfo.executablePath})

Não é possível trabalhar simultaneamente com outra instância da classe BrowserFetcher. Os métodos freqüentemente usados ​​da classe BrowserFetcher são explicados nas próximas seções.

Marionetista Classe BrowserFetcher - Métodos:

Os métodos abaixo estão disponíveis na classe do puppeteer browserfetcher,

browserFetcher.canDownload (revisão) - Com a ajuda do número de revisão do navegador, este método verifica a disponibilidade do navegador especificado como parte da solicitação de cabeçalho. O método retorna o valor booleano (verdadeiro ou falso) com base na disponibilidade.

const boolVar = browserFetcher.canDownload ('766890');

browserFetcher.download (revisão [, progressCallback]) - Este método baixa o navegador Chrome usando o argumento do número de revisão. Aqui, progressCallback é um argumento opcional que chama a função com dois argumentos - bytes baixados e bytes totais. Este método retorna as informações de revisão como um objeto de promessa.

const revInfo = browserFetcher.download ('766890');

browserFetcher.host () - Ele retorna o nome do host, que é usado para fazer o download do navegador.

const hostName = browserFetcher.host ();

browserFetcher.localRevisions () - Retorna a lista de todas as revisões que estão disponíveis no sistema local.

const revList = browserFetcher.localRevisions ();

browserFetcher.platform () - Retorna o nome da plataforma do host, que será qualquer um dos mac, Linux, win32 ou win64.

const platformName = browserFetcher.platform ();

browserFetcher.product () - Retorna o nome do navegador, que será chrome ou firefox

const productName = browserFetcher.product ();

browserFetcher.remove (revisão) - Este método é usado para remover a revisão especificada para o produto / navegador atual. Ele retorna o objeto de promessa, que é resolvido após a conclusão do processo.

const revInfo = browserFetcher.remove ('766890');

browserFetcher.revisionInfo (revisão) - Ele retornará um objeto nas informações de revisão que incluem revisão, folderPath, executablePath, url, local e produto.

const revInfo = browserFetcher.revisionInfo ('766890');

Referência: Clique SUA PARTICIPAÇÃO FAZ A DIFERENÇA para saber mais sobre os métodos da classe BrowserFetcher.

Marionetista Classe de navegador

A classe Navegador de marionetes é criada quando o marionetista inicia ou conecta o navegador usando marionetista.lançamento or marionetista.conectar métodos.

O exemplo abaixo mostra como criar a classe Navegador e a Página usando a referência do navegador.

const marionetista = require('marionetista'); (async() => { const browserChrome = await puppeteer.launch(); const pageChrome = await browserChrome.newPage(); await pageChrome.goto('https://www.google.com'); await browserChrome.close( ); })();

Os eventos e métodos freqüentemente usados ​​da classe Browser são explicados na próxima seção.

Marionetista Classe de navegador - eventos:

Os eventos abaixo estão disponíveis na classe do navegador,

  • browser.on ('desconectado') - Este evento é acionado quando o navegador é fechado / travado ou navegador.desconectar método é chamado.
  • browser.on ('targetchanged') - Este evento é acionado quando o url do destino é alterado.
  • browser.on ('targetcreated') - Este evento é acionado quando a nova página é aberta em uma nova guia ou janela pelo método navegador.novaPágina or janela.abrir.
  • browser.on ('targetdestroyed') - Este evento é acionado quando o destino é destruído, ou seja, a página é fechada.

Marionetista Classe de navegador - métodos:

Os métodos abaixo estão disponíveis na classe do navegador,

  • browser.browserContexts () - Ele retorna a lista de todos os contextos do navegador. Para um navegador recém-lançado, este método retornará a única instância de BrowserContext.
  • browser.close () - Este método é usado para fechar todas as páginas abertas do navegador chromium. 

aguarde browser.close ();

  • browser.createIncognitoBrowserContext () - Cria / retorna o contexto do navegador anônimo, que nunca compartilha os cookies ou cache com nenhum outro contexto do navegador. No exemplo abaixo, a página da web (google) será aberta no modo anônimo.

(assíncrono () => {
  const chromeBrowser = esperar puppeteer.launch ();
  // Crie um novo contexto de navegador anônimo.
  const context = await chromeBrowser.createIncognitoBrowserContext ();
  const pageChrome = await context.newPage ();
  aguarde pageChrome.goto ('https://www.google.com');
}) ();

  • browser.defaultBrowserContext () - Ele retorna o contexto do navegador padrão que não pode ser destruído ou fechado.
  • browser.disconnect () - Isso desconectará o navegador do titereiro. Mas, o navegador continuará em execução neste caso.
  • browser.isConnected () - Este método verifica se o navegador está conectado ou não. Ele retornará valores booleanos com base na verificação.

const boolFlag = await browser.isConnected ();

  • browser.newPage () - Este método irá criar uma nova página e retornar a instância da página.

página const = espera navegador.newPage ();

  • browser.pages () - Este método retorna a lista de todas as páginas que estão atualmente no estado aberto.

const pageList = await browser.pages ();

  • browser.process () - Este método retorna o processo do navegador criado. Se o navegador for criado usando navegador.conectar método, e ele retornará um valor nulo.
  • browser.target () - Este método retorna o destino associado ao navegador.

const target = await browser.target ();

  • browser.targets () - Ele retorna a lista de todos os alvos ativos no navegador.

const targetList = await browser.targets ();

  • browser.userAgent () - Retorna o objeto de promessa sobre o agente original do navegador.
  • browser.version () - Retorna a versão do navegador no formato 'HeadlessChrome / xx.x.xxxx.x 'para cromo sem cabeça e' Chrome / xx.x.xxxx.x 'para cromo sem cabeça. O formato pode mudar em uma versão futura.
  • browser.waitForTarget (predicado [, opções]) - Ele pesquisará em todos os contextos do navegador e aguardará o destino.

aguarde pageChrome.evaluate(() => window.open('https://techiescience.com/'));
const newWindowTarget = aguardar navegador.waitForTarget(target => target.url() === 'https://techiescience.com/');

  • browser.wsEndpoint () - Retorna o url do soquete da web do navegador.

const wsUrl = await browser.wsEndPoint ();

Referência: Clique SUA PARTICIPAÇÃO FAZ A DIFERENÇA para aprender mais sobre os eventos e métodos da classe Browser.

Marionetista Classe BrowserContext

A classe BrowserContext ajuda a operar várias instâncias do navegador. Depois de iniciar uma instância do navegador, por padrão, um único BrowserContext é usado. O navegadorChrome.nova página() método cria uma página no objeto de classe BrowserContext padrão. Se uma página da web invoca outra página, a nova página deve pertencer ao contexto do navegador da página pai. Aqui, a nova página pode ser criada usando que o  window.open () método. 

No exemplo a seguir, o Puppeteer tem a capacidade de criar um contexto de navegador no modo 'incógnito'. O contexto do navegador 'anônimo' não grava nenhum dado no armazenamento.

// Criação de contexto de navegador anônimo const contextIncognito = await browserChrome.createIncognitoBrowserContext(); // Criação de nova página através do contexto do navegador. const pageChrome = aguarde contextIncognito.newPage(); aguarde pageChrome.goto('https://www.google.com'); //fecha o contexto após o uso await contextIncognito.close();

Os eventos e métodos freqüentemente usados ​​da classe BrowserContext são explicados na próxima seção.

Marionetista Classe BrowserContext - Eventos:

Os eventos abaixo estão disponíveis na classe browsercontext,

  • browserContext.on (targetchanged) - Este evento é disparado quando o url do destino no contexto do navegador é alterado.
  • browserContext.on (alvo criado) - Este evento é disparado após a criação de dentro do contexto do navegador. Os métodos janela.abrir navegadorContext.novaPágina são responsáveis ​​por este evento.
  • browserContext.on ('targetdestroyed') - Este evento é disparado quando o destino é destruído dentro do contexto do navegador.

Marionetista Classe BrowserContext - Métodos:

Os métodos abaixo estão disponíveis na classe browsercontext,

  • browserContext.browser () - Este método retorna o objeto do navegador que está disponível no contexto do navegador.
  • browserContext.clearPermissionOverrides () - Este método remove todas as substituições de permissão do contexto do navegador. O exemplo abaixo mostra como usar este método - 

const browserContext = browser.defaultBrowserContext ();
browserContext.overridePermissions ('https://www.google.com', ['leitura da área de transferência']);
browserContext.clearPermissionOverrides ();

  • browserContext.close () - Este método é usado para fechar ou destruir o contexto do navegador. Todos os navegadores disponíveis no contexto do navegador serão fechados.

browserContext.close ();

  • browserContext.isIncognito () - Este método é usado para verificar se o navegador foi criado no modo 'anônimo' ou não. Ele retorna um valor booleano (verdadeiro - modo anônimo ou falso - modo não anônimo) com base no modo do navegador. Por padrão, qualquer navegador é invocado no modo 'não anônimo'.

const boolIsIncognito = browserContext.isIncognito ();

  • browserContext.newPage () - Este método é usado para criar uma nova página no mesmo contexto do navegador.

browserContext.newPage ();

  • browserContext.overridePermissions (origem, permissão) - Este método é usado para conceder a permissão especificada para a origem, ou seja, o url de destino. As diferentes permissões disponíveis para concessão são -
  • 'geolocalização'
  • 'midi-sysex' (midi exclusivo do sistema)
  • 'midi'
  • 'Empurre'
  • 'Câmera'
  • 'notificações'
  • 'microfone'
  • 'sensor de luz ambiente'
  • 'acelerômetro'
  • 'sincronização de fundo'
  • 'giroscópio'
  • 'eventos de acessibilidade'
  • 'leitura na área de transferência'
  • 'magnetômetro'
  • 'escrita na área de transferência'
  • 'manipulador de pagamentos'

O exemplo abaixo mostra como conceder permissão -

const browserContext = browser.defaultBrowserContext ();
await browserContext.overridePermissions ('https://www.google.com', ['geolocalização']);

  • browserContext.pages () - Este método retorna a lista de todas as páginas abertas disponíveis no contexto do navegador. Qualquer página não visível não será listada aqui.

const openPageList = browserContext.pages ();

  • browserContext.targets () - Este método retorna a lista de todos os destinos ativos disponíveis no contexto do navegador. Qualquer página não visível não será listada aqui.

const activeTargetList = browserContext.targets ();

  • browserContext.waitForTarget (predicado [, opções]) - Este método é usado para esperar que um alvo apareça e retorne o objeto alvo. O argumento 'predicado' é basicamente uma chamada de função para cada um dos alvos. Além disso, opcionalmente, podemos passar alguns valores de configuração, como tempo limite, como um segundo argumento.
aguarde pageChrome.evaluate(() => window.open('https://www.google.com/')); const newWindowTarget = await browserContext.waitForTarget(target => target.url() === 'https://www.google.com/');

Referência: Clique SUA PARTICIPAÇÃO FAZ A DIFERENÇA para ler mais sobre os eventos e métodos da classe BrowserContext.

Conclusão:

Neste tutorial “Puppeteer Browser Class”, explicamos a classe BrowserFetcher, a classe BrowserContext e a classe Browser que inclui os namespaces importantes (se houver), eventos (se houver) e métodos que são frequentemente usados ​​nas técnicas de web scraping do Puppeteer com exemplos. No próximo artigo, explicaremos as classes Page, Frame e Dialog.

Deixe um comentário