Skip to content

Pydoll Logo

Pydoll

O Pydoll automatiza navegadores Chromium pelo Chrome DevTools Protocol, sem webdriver e sem esperas manuais. Use para extrair dados, testar aplicações web e automatizar fluxos reais de navegador em Python assíncrono.

Instalação

$ pip install pydoll-python

---> 100%

O Pydoll controla o Chrome ou o Edge que já estão instalados na sua máquina. Você não precisa baixar um webdriver nem manter as versões do driver em sincronia com o navegador.

Novo no Pydoll? Siga o Primeiros passos para um passo a passo completo.

Início rápido

Abra uma página, encontre elementos pela forma como você os descreveria para uma pessoa e interaja com timing humanizado:

import asyncio

from pydoll.browser.chromium import Chrome


async def main():
    async with Chrome() as browser:
        tab = await browser.start()
        await tab.go_to('https://github.com/autoscrape-labs/pydoll')

        star_button = await tab.find(
            tag_name='button',
            timeout=5,
            raise_exc=False
        )
        if not star_button:
            print('Button not found.')
            return

        await star_button.click()
        await asyncio.sleep(3)

asyncio.run(main())

Quando o objetivo é dado, e não interação, defina um modelo e deixe o Pydoll extraí-lo, tipado e validado:

import asyncio

from pydoll.browser.chromium import Chrome
from pydoll.extractor import ExtractionModel, Field


class Quote(ExtractionModel):
    text: str = Field(selector='.text')
    author: str = Field(selector='.author')
    tags: list[str] = Field(selector='.tag')


async def main():
    async with Chrome() as browser:
        tab = await browser.start()
        await tab.go_to('https://quotes.toscrape.com')

        quotes = await tab.extract_all(Quote, scope='.quote', timeout=5)
        for quote in quotes:
            print(f'{quote.author}: {quote.text}')

asyncio.run(main())

Os modelos suportam seletores CSS e XPath, mira em atributos HTML, transformações personalizadas e modelos aninhados. Saiba mais em Extração estruturada.

Por que Pydoll

  • Sem webdriver: o Pydoll se conecta direto ao navegador pelo Chrome DevTools Protocol. Nada para baixar, nenhuma incompatibilidade de versão para depurar.
  • Interações humanizadas: os cliques seguem trajetórias curvas do mouse e a digitação tem ritmo variável, com erros de digitação corrigidos de vez em quando, então sua automação se comporta como uma pessoa no teclado.
  • Assíncrono por natureza: construído sobre asyncio, então um único processo pode controlar muitas abas e navegadores ao mesmo tempo.
  • Tratamento do Cloudflare Turnstile: o Pydoll detecta o widget Turnstile e clica nele nativamente. Nenhum serviço externo de captcha para pagar ou integrar.
  • Controle de rede: monitore, intercepte e modifique requisições conforme a página as faz.
  • Extração tipada: declare um modelo Pydantic e receba objetos validados e amigáveis à IDE, em vez de elementos crus.

Próximos passos

Principais patrocinadores

Patrocinadores

Os patrocinadores mantêm o projeto funcionando e ajudam a financiar o desenvolvimento contínuo. Obrigado a todos que apoiam o Pydoll.

Licença

O Pydoll é distribuído sob a Licença MIT, então você pode usá-lo livremente em projetos pessoais e comerciais.