Push-Pull

Descubra o método de integração Push-Pull para a Oxylabs Web Scraper API. Envie um job e depois consulte o endpoint de resultados mais tarde usando dados em formato JSON.

Push-Pull é nosso método de integração recomendado para lidar de forma confiável com grandes volumes de dados.

Push-Pull é um método de integração assíncrono. Ao enviar o job, você receberá prontamente um JSON response contendo todos os detalhes do job, incluindo parâmetros do job, ID e URLs para download do resultado e verificação de status. Assim que seu job for processado, atualizaremos você por meio de um JSON payload enviado ao seu servidor, se você tiver fornecido um callback URL. Os resultados permanecem disponíveis para recuperação por pelo menos 24 horas após a conclusão.

Com Push-Pull, você pode enviar seus resultados diretamente para seu armazenamento em nuvem (Google Cloud Storage, AWS S3, Alibaba Cloud OSS ou outro armazenamento compatível com S3).

Se você preferir não configurar um serviço para notificações de callback recebidas, você pode simplesmente recuperar seus resultados periodicamente (polling).

Você também pode explorar como o Push-Pull funciona usando Postman.

Job Único

Endpoint

Este endpoint aceita apenas um único query ou URL .

POST https://data.oxylabs.io/v1/queries

Entrada

Forneça os parâmetros do job em um payload JSON como mostrado nos exemplos abaixo. Os exemplos em Python e PHP incluem comentários para maior clareza.

curl --user "user:pass1" \
'https://data.oxylabs.io/v1/queries' \
-H "Content-Type: application/json" \
 -d '{"source": "ENTER_SOURCE_HERE", "url": "https://www.example.com", "geo_location": "United States", "callback_url": "https://your.callback.url", "storage_type": "s3", "storage_url": "s3://your.storage.bucket.url"}'

Saída

A API responderá com um JSON contendo as informações do job, semelhante a isto:

Dicionário de dados

Para descrições detalhadas dos parâmetros de entrada do job, consulte a tabela abaixo ou veja as páginas de documentação específicas dos scrapers em que você estiver interessado.

Chave
Descrição
Tipo

created_at

A data e hora em que o job foi criado.

String

client_id

O ID numérico associado ao nome de usuário do cliente que está fazendo a solicitação.

String

client_notes

Notas enviadas pelo cliente ao enviar um job.

String

content_encoding

Adicione este parâmetro se estiver fazendo download de imagens. Saiba mais aqui.

String

id

O ID exclusivo do job.

String

status

O código de status do job de raspagem ou análise. Você pode ver os códigos de status descritos aqui.

Inteiro

status

O status do job. pending significa que o job ainda está sendo processado. done significa que concluímos o job. faulted significa que encontramos erros ao tentar concluir o job -- e desistimos dele.

String

subdomain

O subdomínio do site.

String

updated_at

A data e hora da última atualização do job. Para jobs concluídos (status é done ou faulted), esta data e hora indica quando o job foi concluído.

String

links

A lista de links, relacionados à entrada fornecida.

Array JSON

links:rel

O tipo de link. self A URL contém os metadados do job, enquanto resultados A URL contém os resultados do job.

String

links:href

A URL do recurso.

String

links:method

O método HTTP que deve ser usado para interagir com uma determinada URL.

String

Callback

O callback é uma POST solicitação que enviamos para sua máquina, informando que a tarefa de extração de dados foi concluída e fornecendo uma URL para baixar o conteúdo raspado. Isso significa que você não precisa verificar o status do job manualmente. Assim que os dados estiverem aqui, nós avisaremos, e tudo o que você precisa fazer agora é recuperá-los.

Entrada

Saída

Verificar Status do Job

Se você forneceu um callback URL válido ao enviar seu job, notificaremos você na conclusão enviando um JSON payload para o callback URL especificado. Esse payload indicará que o job foi concluído e que seu status foi definido como done.

No entanto, se você enviou um job sem usar serviço de callback, você pode verificar o status do job manualmente. Recupere a URL do href campo na rel:self seção da mensagem de response recebida após o envio do job. A URL para verificar o status do job será parecida com a seguinte: http://data.oxylabs.io/v1/queries/12345678900987654321. Consultar essa URL retornará as informações do job, incluindo seu status.

Endpoint

Entrada

Saída

Após a conclusão do job, a API responderá com informações da query em formato JSON. O status do job será alterado para done, indicando que o job foi concluído. Você pode recuperar o conteúdo consultando um dos links fornecidos. Além disso, a response incluirá o timestamp de quando o job foi atualizado pela última vez, permitindo que você acompanhe seu tempo de processamento.

Valores de status

Parâmetro
Descrição

pending

O job ainda está sendo processado e não foi concluído.

done

O job foi concluído. Você pode obter o resultado consultando a URL fornecida no href campo em rel:results seção, por exemplo: http://data.oxylabs.io/v1/queries/12345678900987654321/results.

faulted

Houve um problema com o job, e não conseguimos concluí-lo. Você não será cobrado por faulted jobs.

Recuperar conteúdo do job

Assim que o job estiver pronto para ser recuperado, você pode usar a URL fornecida na resposta em rel:results seção. A URL ficará assim: http://data.oxylabs.io/v1/queries/7173957294344910849/results.

Endpoints

Você pode recuperar diferentes tipos de resultado usando os seguintes endpoints:

Você também pode recuperar vários tipos de resultado em uma única resposta, por exemplo:

Entrada

Abaixo estão exemplos de código demonstrando como usar o /results endpoint:

Saída

Esta tabela explica os tipos de resultado padrão e outros disponíveis com base nos cabeçalhos incluídos no payload da solicitação da API.

Parâmetro de renderização
Parâmetro de parse
Parâmetro XHR
Saída padrão
Saída disponível

-

-

-

html

html

html

-

-

html

html

html

-

true

xhr

html, xhr

html

true

true

parsed

html, xhr, parsed

png

-

-

png

html, png

-

true

-

parsed

html, parsed

html

true

-

parsed

html, parsed

png

true

-

png

html, parsed, png

Abaixo está uma resposta de exemplo do /results endpoint:

Os resultados podem ser recuperados automaticamente sem verificar periodicamente o status do job configurando Callback o serviço. Para isso, especifique a URL de um servidor que seja capaz de aceitar requisições HTTP(S) recebidas ao enviar um job. Quando nosso sistema concluir o job, ele enviará POST um payload JSON para a URL fornecida, e o serviço de Callback fará o download dos resultados conforme descrito no exemplo de implementação de Callback.

Consulta em lote

Scraper APIs permite enviar até 5.000 query ou url valores de parâmetro em uma única solicitação em lote.

Endpoint

O sistema processará cada query ou url enviado como um job separado. Se você fornecer uma URL de callback, receberá uma chamada separada para cada palavra-chave. Caso contrário, nossa resposta inicial conterá job ids para todas as palavras-chave. Por exemplo, se você enviou 50 palavras-chave, retornaremos 50 job ids exclusivos.

IMPORTANTE: Com o endpoint /batch você pode enviar apenas listas de queryou urlvalores de parâmetro (dependendo do source que você usar). Todos os outros parâmetros devem ter valores únicos.

Entrada

Você precisa enviar os parâmetros da consulta como um payload JSON. Veja como enviar um job em lote:

Talvez você note que o exemplo de código acima não explica como o payload JSON deve ser formatado e aponta para um arquivo JSON pronto. Abaixo está o conteúdo do keywords.json arquivo, contendo múltiplos query valores de parâmetro:

...e aqui está um keywords.json arquivo de entrada em lote, contendo múltiplas URLs:

Saída

A API responderá com um objeto JSON, contendo as informações do job para cada job criado. A resposta será semelhante a esta:

Obter lista de endereços IP do Notifier

Você pode querer colocar em whitelist os IPs que enviam mensagens de callback ou obter a lista desses IPs para outros fins. Você pode fazer isso GETneste endpoint:

Endpoint

Entrada

Os exemplos de código abaixo mostram como você pode acessar o /callbacker_ips endpoint:

Saída

A API retornará a lista de IPs que fazem requisições de callback para o seu sistema:

Scheduler

Scheduler é um serviço que você pode usar para agendar jobs de scraping recorrentes.

Ele amplia a funcionalidade da integração Push-Pull e é melhor usado junto com a integração Cloud funcionalidade.

Visite esta página para saber como usar o recurso Scheduler:

Scheduler

Atualizado

Isto foi útil?