A Web Crawler é um recurso interno de nossas APIs de raspador. É uma ferramenta usada para descobrir URLs de destino, selecionar o conteúdo relevante e entregá -la a granel. Ele rasteja sites em tempo real e em escala para fornecer rapidamente todo o conteúdo ou apenas os dados necessários com base nos critérios escolhidos.
Existem três tarefas principais que a web rastreador pode fazer:
Realizar descoberta de URL;
Rastreie todas as páginas em um site;
Index todos os URLs em um domínio.
Use -o quando precisar rastejar pelo site e receber dados analisados a granel, além de coletar uma lista de URLs em uma categoria específica ou em um site inteiro.
Existem três tipos de saída de dados que você pode receber ao usar rastreador da web: uma lista de URLs, resultados analisados e arquivos HTML. Se necessário, você pode definir os rastreadores da web para fazer o upload dos resultados para o seu armazenamento em nuvem.
Você pode controlar facilmente o escopo rastreador ajustando sua largura e profundidade com os filtros. A Web Crawler também pode usar vários parâmetros de raspagem, como localização geográfica e agente de usuário, para aumentar a taxa de sucesso dos trabalhos de rastreamento. A maioria desses parâmetros de raspagem depende da API de raspador que você usa.
Para controlar seu trabalho de rastreamento, você precisa usar pontos de extremidade diferentes. Você pode iniciar, parar e retomar seu trabalho, obter informações sobre o trabalho, obter a lista de pedaços de resultados e obter os resultados. Abaixo estão os pontos de extremidade que usaremos neste tutorial de rastreamento. Para obter mais informações e exemplos de saída, visite nossa documentação.
Endpoint: https://ect.oxylabs.io/v1/jobs
Método: POST
Autenticação: Basic
Cabeçalhos de solicitação: Content-Type: application/json
Esse terminal entregará a lista de URLs encontrados durante o processamento do trabalho.
EndPoint: https://ect.oxylabs.io/v1/jobs/{id}/sitemap
iDage {sitemap
Método: GET
Autenticação: Basic
EndPoint: https://ect.oxylabs.io/v1/jobs/{id}/aggregate
{iDage {
Método: GET
Autenticação: Basic
Os resultados agregados podem consistir em muitos dados, então os dividimos em vários pedaços com base no tamanho do pedaço que você especificar. Use este terminal para obter uma lista de arquivos de chunk disponíveis.
EndPoint: https://ect.oxylabs.io/v1/jobs/{id}/aggregate/{chunk}
Método: GET
Autenticação: Basic
Com esse endpoint, você pode baixar um pedaço específico do resultado agregado. O conteúdo do corpo de resposta depende do tipo de saída que você escolher.
O resultado pode ser um dos seguintes:
Um índice (uma lista de URLs)
Um arquivo JSON agregado com todos os resultados analisados
Um arquivo JSON agregado com todos os resultados HTML
Para sua conveniência, colocamos todos os parâmetros disponíveis que você pode usar na tabela abaixo. Também pode ser encontrado em nossa documentação.
Parâmetro | Descrição | Valor padrão |
---|---|---|
url | O URL do ponto de partida | - |
filters | Esses parâmetros são usados para configurar a amplitude e a profundidade do trabalho de rastreamento, além de determinar quais URIs devem ser incluídos no resultado final. Consulte esta seção para obter mais informações. | - |
filters:crawl | Especifica quais URLs os rastreadores da Web incluirão no resultado final. Consulte esta seção para obter mais informações. | - |
filters:process | Especifica quais URLs os rastreadores da Web rasparão. Consulte esta seção para obter mais informações. | - |
filters:max_depth | Determina o comprimento máximo das cadeias de URL Web Croupler seguirá. Consulte esta seção para obter mais informações. | 1 |
scrape_params | Esses parâmetros são usados para ajustar a maneira como realizamos os trabalhos de raspagem. Por exemplo, você pode querer executar o JavaScript enquanto rasteja um site, ou você preferirmos usar proxies de um local específico. | - |
scrape_params:source | Consulte esta seção para obter mais informações. | - |
scrape_params:geo_location | A localização geográfica para a qual o resultado deve ser adaptado. Consulte esta seção para obter mais informações. | - |
scrape_params:user_agent_type | Tipo de dispositivo e navegador. Consulte esta seção para obter mais informações. | desktop |
scrape_params:render | Ativa a renderização do JavaScript. Use quando o destino exigir JavaScript para carregar o conteúdo. Se você deseja usar esse recurso, defina o valor do parâmetro como HTML. Consulte esta seção para obter mais informações. | - |
output:type_ | O tipo de saída. Podemos retornar um sitemap (lista de URLs encontrados durante o rastejamento) ou um arquivo agregado contendo resultados HTML ou dados analisados. Consulte esta seção para obter mais informações. | - |
upload | Esses parâmetros são usados para descrever o local de armazenamento em nuvem, onde você gostaria que colocássemos o resultado quando terminarmos. Consulte esta seção para obter mais informações. | - |
upload:storage_type | Defina o tipo de armazenamento em nuvem. O único valor válido é S3 (para AWS S3). O GCS (para o Google Cloud Storage) está chegando em breve. | - |
upload:storage_url | O URL do balde de armazenamento. | - |
O uso desses parâmetros é direto, pois você pode passá -los com a carga útil da solicitação. Abaixo, você pode encontrar exemplos de código no Python.
Por simplicidade, você pode usar o Postman para fazer solicitações de rastreamento. Faça o download desta coleção Postman para experimentar todos os pontos de extremidade do rastreador da web. Aqui está um tutorial de vídeo passo a passo que você pode seguir:
Como rastejar um site: guia passo a passo
Para fazer solicitações HTTP no Python, usaremos a biblioteca de solicitações. Instale -o digitando o seguinte em seu terminal:
pip install requests
Para lidar com os resultados do HTML, usaremos a biblioteca BeautifulSoup4 para analisar os resultados e torná -los mais legíveis. Esta etapa é opcional, mas você pode instalar esta biblioteca com:
pip install BeautifulSoup4
No exemplo a seguir, usamos o parâmetro sitemap
para criar um trabalho que rasteja a página inicial da Amazon e obtém uma lista de URLs encontrados na página inicial. Com os parâmetros crawl
e process
sendo definidos como “.*”
, A Web Crawler seguirá e retornará qualquer URL da Amazon. Esses dois parâmetros usam expressões regulares (REGEX) para determinar quais URLs devem ser rastreados e processados. Certifique -se de visitar nossa documentação para obter mais detalhes e recursos úteis.
Ainda não precisamos incluir o parâmetro source
, porque ainda não estamos raspando o conteúdo dos URLs. Usando o módulo json
, escrevemos os dados em um arquivo .json e, com o módulo pprint
, imprimimos o conteúdo estruturado. Vamos ver o exemplo:
import requests , json
from pprint import pprint
# Set the content type to JSON.
headers = { "Content-Type" : "application/json" }
# Crawl all URLs inside the target URL.
payload = {
"url" : "https://www.amazon.com/" ,
"filters" : {
"crawl" : [ ".*" ],
"process" : [ ".*" ],
"max_depth" : 1
},
"scrape_params" : {
"user_agent_type" : "desktop" ,
},
"output" : {
"type_" : "sitemap"
}
}
# Create a job and store the JSON response.
response = requests . request (
'POST' ,
'https://ect.oxylabs.io/v1/jobs' ,
auth = ( 'USERNAME' , 'PASSWORD' ), # Your credentials go here.
headers = headers ,
json = payload ,
)
# Write the decoded JSON response to a .json file.
with open ( 'job_sitemap.json' , 'w' ) as f :
json . dump ( response . json (), f )
# Print the decoded JSON response.
pprint ( response . json ())
Dependendo do tamanho da solicitação, o processo pode levar um pouco de tempo. Você pode garantir que o trabalho seja concluído verificando as informações do trabalho . Quando terminar, envie outra solicitação para o sitemap endpoint https://ect.oxylabs.io/v1/jobs/{id}/sitemap
para retornar uma lista de URLs. Por exemplo:
import requests , json
from pprint import pprint
# Store the JSON response containing URLs (sitemap).
sitemap = requests . request (
'GET' ,
'https://ect.oxylabs.io/v1/jobs/{id}/sitemap' , # Replace {id] with the job ID.
auth = ( 'USERNAME' , 'PASSWORD' ), # Your credentials go here.
)
# Write the decoded JSON response to a .json file.
with open ( 'sitemap.json' , 'w' ) as f :
json . dump ( sitemap . json (), f )
# Print the decoded JSON response.
pprint ( sitemap . json ())
Para obter conteúdo analisado, use o parâmetro parsed
. Usando o exemplo abaixo, podemos engatinhar todos os URLs encontrados nesta página da Amazon e analisar o conteúdo de cada URL. Desta vez, estamos usando a fonte amazon
, pois estamos raspando o conteúdo da página da Amazon especificada. Então, vamos ver tudo isso junto em Python:
import requests , json
from pprint import pprint
# Set the content type to JSON.
headers = { "Content-Type" : "application/json" }
# Parse content from the URLs found in the target URL.
payload = {
"url" : "https://www.amazon.com/s?i=electronics-intl-ship&bbn=16225009011&rh=n%3A502394%2Cn%3A281052&dc&qid"
"=1679564333&rnid=502394&ref=sr_pg_1" ,
"filters" : {
"crawl" : [ ".*" ],
"process" : [ ".*" ],
"max_depth" : 1
},
"scrape_params" : {
"source" : "amazon" ,
"user_agent_type" : "desktop"
},
"output" : {
"type_" : "parsed"
}
}
# Create a job and store the JSON response.
response = requests . request (
'POST' ,
'https://ect.oxylabs.io/v1/jobs' ,
auth = ( 'USERNAME' , 'PASSWORD' ), # Your credentials go here.
headers = headers ,
json = payload ,
)
# Write the decoded JSON response to a .json file.
with open ( 'job_parsed.json' , 'w' ) as f :
json . dump ( response . json (), f )
# Print the decoded JSON response.
pprint ( response . json ())
Observe que, se você deseja usar o parâmetro geo_location
ao raspar as páginas da Amazon, você deverá definir seu valor para o código postal/postal do local preferido. Para mais informações, visite esta página em nossa documentação.
Depois que o trabalho estiver concluído, você pode verificar quantos pedaços sua solicitação gerou e depois baixe o conteúdo de cada pedaço com este endpoint: https://ect.oxylabs.io/v1/jobs/{id}/aggregate/{chunk}
. Por exemplo, com o seguinte snippet de código, estamos imprimindo o primeiro pedaço:
import requests , json
from pprint import pprint
# Store the JSON response containing parsed results.
parsed_results = requests . request (
'GET' ,
'https://ect.oxylabs.io/v1/jobs/{id}/aggregate/1' , # Replace {id] with the job ID.
auth = ( 'USERNAME' , 'PASSWORD' ), # Your credentials go here.
)
# Write the decoded JSON response to a .json file.
with open ( 'parsed_results_1.json' , 'w' ) as f :
json . dump ( parsed_results . json (), f )
# Print the decoded JSON response.
pprint ( parsed_results . json ())
O código para obter resultados de HTML não difere muito do código na seção anterior. A única diferença é que definimos o parâmetro type_
como html
. Vamos ver a amostra de código:
import requests , json
from pprint import pprint
# Set the content type to JSON.
headers = { "Content-Type" : "application/json" }
# Index HTML results of URLs found in the target URL.
payload = {
"url" : "https://www.amazon.com/s?i=electronics-intl-ship&bbn=16225009011&rh=n%3A502394%2Cn%3A281052&dc&qid"
"=1679564333&rnid=502394&ref=sr_pg_1" ,
"filters" : {
"crawl" : [ ".*" ],
"process" : [ ".*" ],
"max_depth" : 1
},
"scrape_params" : {
"source" : "universal" ,
"user_agent_type" : "desktop"
},
"output" : {
"type_" : "html"
}
}
# Create a job and store the JSON response.
response = requests . request (
'POST' ,
'https://ect.oxylabs.io/v1/jobs' ,
auth = ( 'USERNAME' , 'PASSWORD' ), # Your credentials go here
headers = headers ,
json = payload ,
)
# Write the decoded JSON response to a .json file.
with open ( 'job_html.json' , 'w' ) as f :
json . dump ( response . json (), f )
# Print the decoded JSON response.
pprint ( response . json ())
Novamente, você precisará fazer uma solicitação para recuperar cada pedaço do resultado. Usaremos a biblioteca BeautifulSoup4 para analisar o HTML, mas esta etapa é opcional. Em seguida, escrevemos o conteúdo analisado em um arquivo .html . O exemplo de código abaixo baixar conteúdo do primeiro pedaço:
import requests
from bs4 import BeautifulSoup
# Store the JSON response containing HTML results.
html_response = requests . request (
'GET' ,
'https://ect.oxylabs.io/v1/jobs/{id}/aggregate/1' , # Replace {id] with the job ID.
auth = ( 'USERNAME' , 'PASSWORD' ), # Your credentials go here.
)
# Parse the HTML content.
soup = BeautifulSoup ( html_response . content , 'html.parser' )
html_results = soup . prettify ()
# Write the HTML results to an .html file.
with open ( 'html_results.html' , 'w' ) as f :
f . write ( html_results )
# Print the HTML results.
print ( html_results )
Você pode modificar os arquivos de código, conforme necessário, de acordo com seus requisitos.
Este tutorial abrangeu os aspectos fundamentais do uso de rastreadores da web. Recomendamos examinar nossa documentação para obter mais informações sobre o uso dos pontos de extremidade e parâmetros de consulta. Caso você tenha alguma dúvida, sempre pode entrar em contato conosco em [email protected] ou via bate -papo ao vivo em nosso site.