For the complete documentation index, see llms.txt. This page is also available as Markdown.

Renderização de JS e controle do navegador

Aprenda a usar um parâmetro render para definir instruções do navegador na Web Scraper API, para que você possa raspar páginas dinâmicas complexas.

Renderização de JavaScript

Se a página que você deseja extrair exigir JavaScript para carregar dinamicamente todos os dados necessários no DOM, você pode incluir um render parâmetro em suas requisições em vez de configurar e usar manualmente instruções personalizadas do navegador. As requisições com esse parâmetro serão renderizadas بالكامل, e os dados serão armazenados em um arquivo HTML ou em uma captura de tela PNG, dependendo do parâmetro especificado.

HTML

Defina o render parâmetro para html para obter a saída bruta da página renderizada.

PNG (Captura de tela)

Defina o render parâmetro para png para obter uma captura de tela codificada em Base64 da página renderizada.

Se você quiser extrair uma imagem e baixá-la, consulte esta seção.

Exemplo de solicitação

curl --user "user:pass" \\
'https://realtime.oxylabs.io/v1/queries' \\
-H "Content-Type: application/json" \
-d '{"source": "universal", "url": "https://www.example.com", "render": "html"}'

Forçando a renderização em páginas específicas

Para uma extração bem-sucedida, alguns tipos de página de domínios específicos exigem renderização devido ao conteúdo dinâmico. Nosso sistema aplica automaticamente a renderização para essas páginas, mesmo que não seja definida explicitamente pelo usuário.

Queremos que nossos usuários estejam totalmente cientes disso ao extrair as seguintes páginas:

Essa abordagem oferece a melhor experiência de extração possível, garantindo a precisão e a confiabilidade dos dados nessas páginas desafiadoras.

Se você quiser desativar a renderização, pode fazer isso adicionando o seguinte parâmetro às suas requisições:

Instruções do navegador

Você pode definir suas próprias instruções do navegador que são executadas ao renderizar JavaScript.

Uso

Para usar instruções do navegador, forneça um conjunto de browser_instructions ao criar uma tarefa.

Digamos que você queira pesquisar o termo pizza boxes em um site.

Um exemplo de parâmetros da tarefa seria o seguinte:

Etapa 1. Você deve fornecer o "render": "html" parâmetro.

Etapa 2. As instruções do navegador devem ser descritas no campo "browser_instructions" .

As instruções de exemplo acima especificam que o objetivo é inserir um termo de pesquisa pizza boxes em um campo de pesquisa, clicar no botão pesquisar e esperar 5 segundos para o conteúdo carregar.

O resultado coletado deve ser o seguinte:

O HTML coletado deve ser assim:

Obtendo recursos do navegador

Fornecemos uma instrução independente do navegador para obter recursos do navegador.

A função é definida aqui:

Usando fetch_resource resultará na tarefa retornando a primeira ocorrência de um recurso Fetch/XHR que corresponda ao formato fornecido, em vez do HTML que está sendo alvo.

Digamos que queremos direcionar um recurso GraphQL que é obtido ao visitar uma página de produto organicamente no navegador. Forneceremos as informações da tarefa assim:

Essas instruções resultarão em um resultado assim:

Lista de instruções de navegador suportadas

Argumentos gerais

Todas as instruções definidas abaixo têm um conjunto consistente de argumentos. Os argumentos são os seguintes.

type

  • Tipo: Enum["click", "input", "scroll", "scroll_to_bottom", "wait", "wait_for_element", "fetch_resource"]

  • Descrição: Tipo de instrução do navegador.

timeout_s

  • Tipo: int

  • Descrição: Quanto tempo até a ação ser ignorada se não for concluída a tempo.

  • Restrições: 0 < timeout_s <= 60

  • Valor padrão: 5

wait_time_s

  • Tipo: int

  • Descrição: Quanto tempo esperar antes de executar a próxima ação.

  • Restrições: 0 < wait_time_s <= 60

  • Valor padrão: 0

on_error

  • Tipo: Enum["error", "skip"]

  • Descrição: Indicador do que fazer com as instruções caso esta instrução falhe:

    • "error": Interrompe a execução das instruções do navegador.

    • "skip": Continua com a próxima instrução.

  • Valor padrão: "error"

Exemplo com argumentos gerais

Instruções

click

  • Descrição: Clica em um elemento e espera um número definido de segundos.

  • Args:

    • type: str = "click"

    • selector: dict

      • type: Enum["xpath", "css", "text"]

      • value: str

Exemplo:

input

  • Descrição: Insere um texto em um elemento selecionado.

  • Args:

    • type: str = "input"

    • selector: dict

      • type: Enum["xpath", "css", "text"]

      • value: str

    • value: str

Exemplo:

scroll

  • Descrição: Rola um número definido de pixels.

  • Args:

    • type: str = "scroll"

    • x: int

    • y: int

Exemplo:

scroll_to_bottom

  • Descrição: Rola até o fim por um número definido de segundos.

  • Args:

    • type: str = "scroll_to_bottom"

Exemplo:

wait

  • Descrição: Espera um número definido de segundos.

  • Args:

    • type: str = "wait"

Exemplo:

wait_for_element

  • Descrição: Espera o elemento carregar por um número definido de segundos.

  • Args:

    • type: str = "wait_for_element"

    • selector: dict

      • type: Enum["xpath", "css", "text"]

      • value: str

Exemplo:

fetch_resource

  • Descrição: Busca a primeira ocorrência de um recurso Fetch/XHR correspondente ao padrão definido.

  • Args:

    • type: str = "fetch_resource"

    • filter: str(expressão RegEx)

    • on_error: Enum["error", "skip"]

Exemplo:

Validação de instruções

Qualquer inconsistência em relação ao formato da instrução resultará em um 400 código de status e uma mensagem de erro correspondente.

Por exemplo, um payload como:

Resultará em:

Solução de problemas

Códigos de status

Veja nossos códigos de resposta descritos aqui. Os códigos de status em relação à validação das instruções estão documentados aqui.

Erros e avisos

Se houver um erro ou aviso resultante de suas ações de navegação, você o encontrará no resultado sob as chaves browser_instructions_error ou browser_instructions_warnings. Por exemplo, se você tiver enviado as seguintes instruções do navegador e o esperado xpath não for localizado na página, o resultado incluirá um aviso.

browser_instructions:

Resultados:

Possíveis erros e avisos

Ocorreu um erro inesperado ao converter instruções do navegador em ações.

Ocorreu um erro inesperado ao executar {action.type} instruções do navegador.

A ação {action.type} atingiu o tempo limite.

Não foi possível encontrar o tipo de seletor {selector.type} com o valor {selector.value} na página.

Atualizado

Isto foi útil?