Push-Pull
Descubra o método de integração Push-Pull para a Web Scraper API da Oxylabs. Envie um job e depois consulte o endpoint de resultados mais tarde usando dados em formato JSON.
Push-Pull é o método de integração recomendado para lidar de forma confiável com grandes volumes de dados.
Visite o repositório GitHub da Oxylabs para um exemplo completo e funcional de integração Push-Pull em Python.
Push-Pull é um método de integração assíncrono. Ao enviar a tarefa, você receberá prontamente uma JSON resposta contendo todos os detalhes da tarefa, incluindo parâmetros da tarefa, ID e URLs para download dos resultados e verificação de status. Assim que sua tarefa for processada, nós o atualizaremos por meio de uma JSON carga útil enviada ao seu servidor, se você forneceu uma 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
Ponto de extremidade
Este endpoint aceita apenas uma única consulta ou URL valor.
POST https://data.oxylabs.io/v1/queriesEntrada
Forneça os parâmetros da tarefa em uma carga útil JSON como mostrado nos exemplos abaixo. Os exemplos em Python e PHP incluem comentários para clareza.
curl --user "USERNAME:PASSWORD" \
'https://data.oxylabs.io/v1/queries' \
-H "Content-Type: application/json" \
-d '{"source": "universal", "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
# Structure payload.
payload = {
"source": "universal", # Source you choose e.g. "universal"
"url": "https://www.example.com", # Check the docs of the specific source to see whether you should use "url" or "query"
"geo_location": "United States", # Some sources accept zip codes or coordinates
#"render" : "html", # Uncomment if you want to render JavaScript within the page
#"render" : "png", # Uncomment if you want to take a screenshot of a scraped web page
#"parse" : True, # Check what sources support parsed data
"callback_url": "https://your.callback.url", # Required if you use the callback listener
"storage_type": "s3",
"storage_url": "s3://your.storage.bucket.url"
}
# Get response.
response = requests.request(
'POST',
'https://data.oxylabs.io/v1/queries',
auth=('YOUR_USERNAME', 'YOUR_PASSWORD'), #Your credentials go here
json=payload,
)
# Print prettified response to stdout.
pprint(response.json())Saída
A API responderá com um JSON contendo as informações da tarefa, semelhante a isto:
Dicionário de dados
A tabela abaixo descreve os campos retornados na resposta da tarefa. Para os parâmetros de entrada que você pode enviar, consulte a página de documentação da fonte que você está usando.
created_at
A data e hora em que a tarefa foi criada.
Cadeia de caracteres
client_id
O ID numérico associado ao nome de usuário do cliente que está fazendo a solicitação.
Cadeia de caracteres
client_notes
Observações enviadas pelo cliente ao enviar uma tarefa.
Cadeia de caracteres
content_encoding
A codificação do conteúdo retornado. Defina-a em sua carga útil quando baixando imagens; ela é retornada na resposta da tarefa.
Cadeia de caracteres
id
O ID único da tarefa.
Cadeia de caracteres
statuses
Os códigos de status da tarefa de scraping ou parsing. Você pode ver os códigos de status descritos aqui.
Inteiro
status
O status da tarefa. pendente significa que a tarefa ainda está sendo processada. concluído significa que concluímos a tarefa. com falha significa que encontramos erros ao tentar concluir a tarefa -- e desistimos dela.
Cadeia de caracteres
subdomain
O subdomínio do site.
Cadeia de caracteres
updated_at
A data e hora em que a tarefa foi atualizada pela última vez. Para tarefas que foram concluídas (status está concluído ou com falha), essa data e hora indica quando a tarefa foi concluída.
Cadeia de caracteres
_links
A lista de links relacionados à entrada fornecida.
Array JSON
_links:rel
O tipo do link. self A URL contém os metadados da tarefa, enquanto results a URL contém os resultados da tarefa.
Cadeia de caracteres
_links:href
A URL do recurso.
Cadeia de caracteres
_links:href_list
A lista de URLs do recurso, uma por página. Retornado em vez de href em entradas cujo rel começa com results-content. Veja Recuperar conteúdo da tarefa.
Array JSON
_links:method
O método HTTP que deve ser usado para interagir com uma determinada URL.
Cadeia de caracteres
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 extraído. Isso significa que você não precisa verificar o status da tarefa manualmente. Assim que os dados estiverem aqui, 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, notificaremos você 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 que seu status foi definido como concluído.
No entanto, se você enviou um job sem usar o 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 resposta recebida após o envio do job. A URL para verificar o status do job será semelhante à seguinte: http://data.oxylabs.io/v1/queries/12345678900987654321. Consultar essa URL retornará as informações do job, incluindo seu status atual status.
Ponto de extremidade
Entrada
Saída
Quando o job for concluído, a API responderá com as informações da consulta em formato JSON. O status do job será alterado para concluído, 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 da última atualização do job, permitindo acompanhar seu tempo de processamento.
Valores de status
pendente
O job ainda está sendo processado e não foi concluído.
concluído
O job foi concluído. Você pode recuperar o resultado consultando a URL fornecida no href campo na rel:results seção, por exemplo: http://data.oxylabs.io/v1/queries/12345678900987654321/results.
com falha
Houve um problema com o job e não foi possível concluí-lo. Você não é cobrado por quaisquer com falha jobs.
Recuperar conteúdo da tarefa
Quando o job estiver pronto para ser recuperado, você pode usar a URL fornecida na resposta na rel:results seção. A URL terá a seguinte aparência: http://data.oxylabs.io/v1/queries/12345678900987654321/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:
Para obter uma página isoladamente como conteúdo bruto, em vez de dentro de um objeto JSON, use o endpoint de conteúdo, onde {n} é o número da página, começando em 1. Os mesmos tipo valores se aplicam.
Entrada
Abaixo estão exemplos de código demonstrando como usar o /results endpoint:
Saída
Esta tabela explica o tipo de resultado padrão com base nos parâmetros incluídos no payload da solicitação da API.
-
-
-
html
html
-
-
html
html
-
true
xhr
html
true
true
parsed
png
-
-
png
-
true
-
parsed
html
true
-
parsed
png
true
-
png
Por padrão, o /results endpoint retorna apenas a saída padrão do seu payload. Para receber tipos de resultado adicionais, adicione o tipo parâmetro de consulta mostrado em Endpoints acima. Cada tipo solicitado é retornado como uma entrada separada no results array. Este é o vários tipos de resultado recurso, e funciona da mesma forma em Push-Pull e Realtime.
Abaixo está uma resposta de exemplo do /results endpoint. Junto com results, ele retorna um job objeto contendo os mesmos detalhes do job descritos no Dicionário de dados, abreviado aqui. Algumas fontes também retornam _request, _response e session_info em cada resultado.
Os resultados podem ser recuperados automaticamente sem verificar periodicamente o status do job configurando o Callback serviço. Para isso, especifique a URL de um servidor capaz de aceitar requisições HTTP(S) recebidas ao enviar um job. Quando nosso sistema concluir o job, ele irá POST enviar um payload JSON para a URL fornecida, e o serviço 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 consulta ou url valores de parâmetro em uma única solicitação em lote.
Ponto de extremidade
O sistema processará cada consulta 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ê enviar 50 palavras-chave, retornaremos 50 job ids.
Entrada
Você precisa enviar os parâmetros da consulta como um payload JSON. Veja como enviar 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 pronto. Abaixo está o conteúdo de keywords.json arquivo, contendo vários consulta valores de parâmetro:
...e aqui está um keywords.json arquivo de entrada em lote, contendo várias URLs:
Saída
A API responderá com um objeto JSON, contendo as informações do job de cada job criado. A resposta será semelhante a esta:
Obter lista de endereços IP do Notifier
Talvez você queira colocar os IPs que enviam mensagens de callback para você na lista de permissões ou obter a lista desses IPs para outros fins. Você pode fazer isso GETobtendo este endpoint:
Ponto de extremidade
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 trabalhos recorrentes de scraping.
Ele estende a funcionalidade da integração Push-Pull e é melhor usado junto com a integração Cloud funcionalidade.
Visite esta página para aprender como usar o recurso Scheduler:
Atualizado
Isto foi útil?

