Push-Pull
Descubra o método de integração Push-Pull para a Oxylabs Web Scraper API. Submeta 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.
Visite o repositório Oxylabs no GitHub para um exemplo completo de funcionamento de integração Push-Pull em Python.
Push-Pull é um método de integração assíncrono. Após o envio do job, você receberá prontamente uma JSON resposta contendo todos os detalhes do job, incluindo parâmetros do job, ID e URLs para download de resultados e verificação de status. Uma vez que seu job for processado, iremos notificá-lo via um JSON payload enviado ao seu servidor, se você forneceu 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).
Você também pode explorar como o Push-Pull funciona usando Postman.
Job Único
Endpoint
Este endpoint aceita apenas um único query ou URL valor.
POST https://data.oxylabs.io/v1/queriesEntrada
Forneça os parâmetros do job em um payload JSON conforme mostrado nos exemplos abaixo. 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"}'import requests
from pprint import pprint
# Estruturar payload.
payload = {
"source": "ENTER_SOURCE_HERE", # Fonte que você escolhe, por exemplo "universal"
"url": "https://www.example.com", # Verifique na fonte específica se você deve usar "url" ou "query"
"geo_location": "United States", # Algumas fontes aceitam CEP ou coordenadas
#"render" : "html", # Descomente se quiser renderizar JavaScript dentro da página
#"render" : "png", # Descomente se quiser capturar uma screenshot de uma página raspada
#"parse" : true, # Verifique quais fontes suportam dados parseados
#"callback_url": "https://your.callback.url", #obrigatório se estiver usando listener de callback
"callback_url": "https://your.callback.url",
"storage_type": "s3",
"storage_url": "s3://your.storage.bucket.url"
}
# Obter resposta.
response = requests.request(
'POST',
'https://data.oxylabs.io/v1/queries',
auth=('YOUR_USERNAME', 'YOUR_PASSWORD'), #Suas credenciais vão aqui
json=payload,
)
# Imprimir a resposta formatada no stdout.
pprint(response.json())Saída
A API responderá com um JSON contendo as informações do job, parecido com isto:
Dicionário de dados
Para descrições detalhadas dos parâmetros de entrada do job, consulte a tabela abaixo ou refira-se às páginas de documentação específicas dos scrapers que lhe interessam.
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 fez a solicitação.
String
client_notes
Notas submetidas pelo cliente ao enviar um job.
String
id
O ID único do job.
String
statuses
O código de status do job de scraping ou parsing. Você pode ver os códigos de status descritos aqui.
Integer
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 completar o job — e desistimos.
String
subdomain
O subdomínio do site.
String
updated_at
A data e hora em que o job foi atualizado pela última vez. Para jobs que estão finalizados (status is done ou faulted), essa data e hora indica quando o job foi finalizado.
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 results A URL contém os resultados do job.
String
links:href
A URL para o recurso.
String
links:método
O método HTTP que deve ser usado para interagir com uma determinada URL.
String
Callback
O callback é um POST request que enviamos para sua máquina, informando que a tarefa de extração de dados foi concluída e fornecendo uma URL para download do conteúdo raspado. Isso significa que você não precisa verificar o status do job manualmente. Uma vez que os dados estiverem disponíveis, avisaremos você, e tudo o que você precisa fazer agora é recuperá-los.
Entrada
Saída
Verificar Status do Job
Se você forneceu uma URL de callback válida ao enviar seu job, nós o notificaremos quando ele for concluído enviando um JSON payload para a URL de callback especificada. Esse payload indicará que o job foi concluído e seu status 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 campo href no rel:self seção da mensagem de resposta recebida após o envio do job. A URL para verificar o status do job se parecerá 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
Ao concluir o 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 finalizado. Você pode recuperar o conteúdo consultando um dos links fornecidos. Além disso, a resposta incluirá o timestamp de quando o job foi atualizado pela última vez, permitindo que você acompanhe o tempo de processamento.
Valores de status
pending
O job ainda está sendo processado e não foi concluído.
done
O job foi concluído. Você pode recuperar o resultado consultando a URL fornecida no href campo sob o 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 é cobrado por quaisquer faulted jobs.
Recuperar Conteúdo do Job
Uma vez que o job esteja pronto para recuperação, você pode usar a URL fornecida na resposta sob a rel:results seção. A URL terá este formato: http://data.oxylabs.io/v1/queries/7173957294344910849/results.
Endpoints
Você pode recuperar diferentes tipos de resultados usando os seguintes endpoints:
Você também pode recuperar múltiplos tipos de resultados 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 headers incluídos no payload da requisição API.
x
x
x
html
html
html
x
x
html
html
html
x
true
xhr
html, xhr
html
true
true
parsed
html, xhr, parsed
png
x
x
png
html, png
x
true
x
parsed
html, parsed
html
true
x
parsed
html, parsed
png
true
x
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 um Callback serviço. Para fazer isso, especifique a URL de um servidor capaz de aceitar requisições HTTP(S) de entrada ao submeter um job. Quando nosso sistema concluir o job, ele irá 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 suporta o envio de até 5.000 query ou url valores de parâmetros dentro de uma única requisição em lote.
Batch requests are currently not supported para chatgpt e perplexity fontes.
Endpoint
O sistema irá tratar 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á jobs idpara todas as palavras-chave. Por exemplo, se você enviou 50 palavras-chave, retornaremos 50 jobs únicos ids.
Entrada
Você precisa postar os parâmetros da query como um payload JSON. Veja como submeter um job em lote:
Você pode notar que o exemplo de código acima não explica como o payload JSON deve ser formatado e aponta para um arquivo JSON pré-criado. Abaixo está o conteúdo de 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 na lista branca os IPs que enviam mensagens de callback para você ou obter a lista desses IPs para outros fins. Você pode fazer isso GETacessando este 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 solicitações de callback para o seu sistema:
Agendador
Scheduler é um serviço que você pode usar para agendar jobs de scraping recorrentes.
Ele estende a funcionalidade da integração Push-Pull e é melhor usado junto com o integração Cloud funcionalidade.
Visite esta página para aprender como usar o recurso Scheduler:
SchedulerAtualizado
Isto foi útil?

