Renderização em 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 fazer scraping de páginas dinâmicas complexas.
Renderização de JavaScript
Se a página que você quer extrair usa JavaScript para carregar seus dados no DOM, adicione o render parâmetro à sua solicitação. A página é então totalmente renderizada antes de retornarmos o resultado, em um dos dois formatos:
html
O HTML bruto da página totalmente renderizada
png
Uma captura de tela (PNG) codificada em Base64 da página renderizada
Exemplo de requisição
curl --user "USERNAME:PASSWORD" \\
'https://realtime.oxylabs.io/v1/queries' \\
-H "Content-Type: application/json" \\
-d '{"source": "universal", "url": "https://www.example.com", "render": "html"}'import requests
from pprint import pprint
# Structure payload.
payload = {
'source': 'universal',
'url': 'https://www.example.com',
'render': 'html',
}
# Get response.
response = requests.request(
'POST',
'https://realtime.oxylabs.io/v1/queries',
auth=('USERNAME', 'PASSWORD'),
json=payload,
)
# Instead of response with job status and results url, this will return the
# JSON response with the result.
pprint(response.json())A renderização de JavaScript leva mais tempo para extrair a página. Defina o timeout no lado do cliente para 180 segundos se estiver usando os métodos de integração Realtime ou Proxy Endpoint.
Para garantir o menor consumo de tráfego, nosso sistema não carrega ativos desnecessários durante a renderização da página.
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. Para esses casos, nosso sistema aplica a renderização automaticamente mesmo se você não definir o render parâmetro, para que você sempre obtenha dados precisos e confiáveis dessas páginas, que de outra forma seriam difíceis.
Observe que trabalhos renderizados consomem mais tráfego em comparação com trabalhos não renderizados.
Se quiser desativar a renderização, você pode fazer isso adicionando o seguinte parâmetro às suas solicitações:
A lista completa de destinos afetados é mantida no arquivo abaixo. Queremos que nossos usuários estejam totalmente cientes disso ao extrair as seguintes páginas:
Instruções do navegador
Quando uma página precisar de interação, como clicar em um botão, inserir um termo de busca ou rolar para carregar mais itens, você pode definir suas próprias browser_instructions que são executadas enquanto a página é renderizada.
A maneira mais fácil de criar instruções do navegador é o construtor visual com IA no Web Scraper API Playground. Saiba mais aqui.
Início rápido
Antes de tudo, as instruções do navegador exigem o render parâmetro, seja html ou png, e são fornecidas como uma lista no browser_instructions campo. Cada item da lista é executado em ordem.
Suponha que você queira buscar por caixas de pizza em um site — digite o termo no campo de busca, clique no botão de busca e aguarde 5 segundos para os resultados carregarem:
O resultado contém o HTML após a execução das instruções:
O HTML extraído deve ficar assim:

Obtendo recursos do navegador
Fornecemos uma instrução de navegador independente para obter recursos do navegador.
A função está definida aqui:
Usando fetch_resource resultará no job retornando a primeira ocorrência de um recurso Fetch/XHR que corresponda ao formato fornecido, em vez do HTML que está sendo direcionado.
Suponha que queiramos apontar para um recurso GraphQL que é obtido ao visitar uma página de produto de forma orgânica no navegador. Forneceremos as informações do job 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.
tipo
Tipo:
Enum["click", "input", "scroll", "scroll_to_bottom", "wait", "wait_for_element", "fetch_resource"]Descrição: Tipo de instrução do navegador.
Obrigatório:
verdadeiro
timeout_s
Tipo:
inteiroDescrição: Quanto tempo até a ação ser ignorada se não for concluída a tempo.
Restrições: 0 <
timeout_s<= 60Valor padrão: 5
wait_time_s
Tipo:
inteiroDescrição: Quanto tempo esperar antes de executar a próxima ação.
Restrições: 0 <
wait_time_s<= 60Valor padrão: 0
on_error
Tipo:
Enum["error", "skip"]Descrição: Indica o 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 aguarda uma quantidade definida de segundos.
Argumentos:
type: string = "click"selector: dicionáriotype: Enum["xpath", "css", "text"]value: string
Exemplo:
input
Descrição: Insere um texto em um elemento selecionado.
Argumentos:
type: string = "input"selector: dicionáriotype: Enum["xpath", "css", "text"]value: string
value: string
Exemplo:
scroll
Descrição: Rola uma quantidade definida de pixels.
Argumentos:
type: string = "scroll"x: inteiroy: inteiro
Exemplo:
scroll_to_bottom
Descrição: Rola até o final por uma quantidade definida de segundos.
Argumentos:
type: string = "scroll_to_bottom"
Exemplo:
wait
Descrição: Aguarda uma quantidade definida de segundos.
Argumentos:
type: string = "wait"
Exemplo:
wait_for_element
Descrição: Aguarda o elemento carregar por uma quantidade definida de segundos.
Argumentos:
type: string = "wait_for_element"selector: dicionáriotype: Enum["xpath", "css", "text"]value: string
Exemplo:
fetch_resource
A fetch_resource instrução deve ser a última instrução na lista de instruções do navegador; quaisquer instruções subsequentes não serão executadas.
Descrição: Obtém a primeira ocorrência de um recurso Fetch/XHR correspondente ao padrão definido.
Argumentos:
type: string = "fetch_resource"filter: string(RegEx expression)on_error: Enum["error", "skip"]
Exemplo:
Validação das 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, uma carga útil como esta:
Resultará em:
Resoluçã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ê enviou as seguintes instruções do navegador e o esperado xpath não estiver localizado na página, o resultado incluirá um aviso.
browser_instructions:
Resultados:
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ção {action.type} esgotou o tempo.
Não foi possível encontrar o tipo de seletor {selector.type} com o valor {selector.value} na página.
Atualizado
Isto foi útil?

