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 e 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.
Olá, sou K. Mondal e estou associado a uma organização líder. Tenho mais de 12 anos de experiência profissional em domínios, por exemplo, desenvolvimento de aplicativos, testes de automação, consultor de TI. Estou muito interessado em aprender diferentes tecnologias. Estou aqui para cumprir minha aspiração e atualmente contribuindo como autor e desenvolvedor de sites no LambdaGeeks.
Vamos nos conectar através do LinkedIn-