Web Crawler es una característica incorporada de nuestras API de raspador. Es una herramienta utilizada para descubrir URL de destino, seleccionar el contenido relevante y hacerla entregar a granel. Ratea sitios web en tiempo real y a escala para entregar rápidamente todo el contenido o solo los datos que necesita en función de los criterios elegidos.
Hay tres tareas principales que el rastreador web puede hacer:
Realizar el descubrimiento de URL;
Rastrear todas las páginas en un sitio;
Indexa todas las URL en un dominio.
Úselo cuando necesite gatear a través del sitio y recibir datos analizados a granel, así como recopilar una lista de URL en una categoría específica o en un sitio web completo.
Hay tres tipos de salida de datos que puede recibir al usar Web Crawler: una lista de URL, resultados analizados y archivos HTML. Si es necesario, puede configurar Web Crawler para cargar los resultados en su almacenamiento en la nube.
Puede controlar fácilmente el alcance de rastreo ajustando su ancho y profundidad con filtros. Web Crawler también puede usar varios parámetros de raspado, como la ubicación geográfica y el agente de usuarios, para aumentar la tasa de éxito de los trabajos de rastreo. La mayoría de estos parámetros de raspado dependen de la API de raspador que use.
Para controlar su trabajo de rastreo, debe usar diferentes puntos finales. Puede iniciar, detener y reanudar su trabajo, obtener información de trabajo, obtener la lista de fragmentos de resultados y obtener los resultados. A continuación se presentan los puntos finales que usaremos en este tutorial de rastreo. Para obtener más información y ejemplos de salida, visite nuestra documentación.
Endpoint: https://ect.oxylabs.io/v1/jobs
Método: POST
Autenticación: Basic
Encabezados de solicitud: Content-Type: application/json
Este punto final entregará la lista de URL encontradas mientras procesa el trabajo.
Endpoint: https://ect.oxylabs.io/v1/jobs/{id}/sitemap
Método: GET
Autenticación: Basic
Endpoint: https://ect.oxylabs.io/v1/jobs/{id}/aggregate
Método: GET
Autenticación: Basic
Los resultados agregados pueden consistir en muchos datos, por lo que los dividimos en múltiples fragmentos en función del tamaño de la fragmentación que especifique. Use este punto final para obtener una lista de archivos de fragmentos disponibles.
Endpoint: https://ect.oxylabs.io/v1/jobs/{id}/aggregate/{chunk}
Método: GET
Autenticación: Basic
Con este punto final, puede descargar una parte particular del resultado agregado. El contenido del cuerpo de respuesta depende del tipo de salida que elija.
El resultado puede ser uno de los siguientes:
Un índice (una lista de URL)
Un archivo JSON agregado con todos los resultados analizados
Un archivo JSON agregado con todos los resultados HTML
Para su conveniencia, hemos puesto todos los parámetros disponibles que puede usar en la tabla a continuación. También se puede encontrar en nuestra documentación.
Parámetro | Descripción | Valor predeterminado |
---|---|---|
url | La URL del punto de partida | - |
filters | Estos parámetros se utilizan para configurar la amplitud y profundidad del trabajo de rastreo, así como para determinar qué URL se deben incluir en el resultado final. Consulte esta sección para obtener más información. | - |
filters:crawl | Especifica qué URLS Web Crawler incluirá en el resultado final. Consulte esta sección para obtener más información. | - |
filters:process | Especifica qué rastreador web de URLS raspará. Consulte esta sección para obtener más información. | - |
filters:max_depth | Determina la longitud máxima de las cadenas de URL que seguirá el rastreador web. Consulte esta sección para obtener más información. | 1 |
scrape_params | Estos parámetros se utilizan para ajustar la forma en que realizamos los trabajos de raspado. Por ejemplo, es posible que desee que ejecutemos JavaScript mientras rastree un sitio, o puede preferir que usemos proxies desde una ubicación en particular. | - |
scrape_params:source | Consulte esta sección para obtener más información. | - |
scrape_params:geo_location | La ubicación geográfica para la que debe adaptarse el resultado. Consulte esta sección para obtener más información. | - |
scrape_params:user_agent_type | Tipo de dispositivo y navegador. Consulte esta sección para obtener más información. | desktop |
scrape_params:render | Habilita la representación de JavaScript. Use cuando el objetivo requiere JavaScript para cargar contenido. Si desea usar esta función, establezca el valor del parámetro en HTML. Consulte esta sección para obtener más información. | - |
output:type_ | El tipo de salida. Podemos devolver un mapa del sitio (lista de URL encontradas mientras se arrastramos) o un archivo agregado que contiene resultados HTML o datos analizados. Consulte esta sección para obtener más información. | - |
upload | Estos parámetros se utilizan para describir la ubicación de almacenamiento en la nube donde desea que pusiéramos el resultado una vez que hayamos terminado. Consulte esta sección para obtener más información. | - |
upload:storage_type | Defina el tipo de almacenamiento en la nube. El único valor válido es S3 (para AWS S3). GCS (para el almacenamiento en la nube de Google) llegará pronto. | - |
upload:storage_url | La URL del cubo de almacenamiento. | - |
Usar estos parámetros es sencillo, ya que puede pasarlos con la carga útil de la solicitud. A continuación puede encontrar ejemplos de código en Python.
Para simplificar, puede usar Postman para realizar solicitudes de rastreo. Descargue esta colección Postman para probar todos los puntos finales de Web Crawler. Aquí hay un video tutorial paso a paso que puedes seguir:
Cómo rastrear un sitio web: guía paso a paso
Para realizar solicitudes HTTP en Python, utilizaremos la biblioteca de solicitudes. Instálelo ingresando lo siguiente en su terminal:
pip install requests
Para lidiar con los resultados de HTML, utilizaremos la biblioteca BeautifulSoup4 para analizar los resultados y hacerlos más legibles. Este paso es opcional, pero puede instalar esta biblioteca con:
pip install BeautifulSoup4
En el siguiente ejemplo, utilizamos el parámetro sitemap
para crear un trabajo que rastree la página de inicio de Amazon y obtenga una lista de URL que se encuentran dentro de la página inicial. Con los parámetros crawl
y process
que se establecen en “.*”
, Web Crawler seguirá y devolverá cualquier URL de Amazon. Estos dos parámetros usan expresiones regulares (regex) para determinar qué URL debe ser rastreada y procesada. Asegúrese de visitar nuestra documentación para obtener más detalles y recursos útiles.
No necesitamos incluir el parámetro source
porque todavía no estamos raspando contenido de las URL. Usando el módulo json
, escribimos los datos en un archivo .json , y luego, con el módulo pprint
, imprimimos el contenido estructurado. Veamos el ejemplo:
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 ())
Dependiendo del tamaño de la solicitud, el proceso puede tomar un poco de tiempo. Puede asegurarse de que el trabajo haya terminado revisando la información del trabajo . Cuando esté listo, envíe otra solicitud al punto final del SitEmap https://ect.oxylabs.io/v1/jobs/{id}/sitemap
para devolver una lista de URL. Por ejemplo:
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 obtener contenido analizado, use el parámetro parsed
. Usando el ejemplo a continuación, podemos rastrear todas las URL que se encuentran en esta página de Amazon y luego analizar el contenido de cada URL. Esta vez, estamos usando la fuente amazon
, ya que estamos raspando contenido de la página de Amazon especificada. Entonces, veamos todo esto juntos en 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 ())
Tenga en cuenta que si desea usar el parámetro geo_location
al raspar las páginas de Amazon, debe establecer su valor en el código ZIP/Postal de la ubicación preferida. Para obtener más información, visite esta página en nuestra documentación.
Una vez que el trabajo está completo, puede verificar cuántos trozos ha generado su solicitud y luego descargar el contenido de cada fragmento con este punto final: https://ect.oxylabs.io/v1/jobs/{id}/aggregate/{chunk}
. Por ejemplo, con el siguiente fragmento de código, estamos imprimiendo el primer fragmento:
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 ())
El código para obtener resultados HTML no difiere mucho del código en la sección anterior. La única diferencia es que hemos establecido el parámetro type_
en html
. Veamos la muestra 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 ())
Nuevamente, deberá hacer una solicitud para recuperar cada parte del resultado. Usaremos la biblioteca BeautifulSoup4 para analizar HTML, pero este paso es opcional. Luego escribimos el contenido analizado en un archivo .html . El ejemplo de código a continuación descarga el contenido del primer fragmento:
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 )
Puede modificar los archivos de código según sea necesario según sus requisitos.
Este tutorial cubrió los aspectos fundamentales del uso de Web Crawler. Recomendamos ver nuestra documentación para obtener más información sobre el uso de los puntos finales y los parámetros de consulta. En caso de que tenga alguna pregunta, siempre puede contactarnos en [email protected] o a través del chat en vivo en nuestro sitio web.