Web Crawler est une fonctionnalité intégrée de nos API Scraper. C'est un outil utilisé pour découvrir les URL cibles, sélectionner le contenu pertinent et le faire livrer en vrac. Il exploite les sites Web en temps réel et à grande échelle pour fournir rapidement tout le contenu ou uniquement les données dont vous avez besoin en fonction de vos critères choisis.
Il y a trois tâches principales que le robot Web peut faire:
Effectuer une découverte d'URL;
Ramper toutes les pages sur un site;
Indexez toutes les URL sur un domaine.
Utilisez-le lorsque vous devez ramper sur le site et recevoir des données analysées en vrac, ainsi que de collecter une liste d'URL dans une catégorie spécifique ou à partir d'un site Web entier.
Il existe trois types de sorties de données que vous pouvez recevoir lors de l'utilisation de robots Web: une liste d'URL, des résultats analysés et des fichiers HTML. Si nécessaire, vous pouvez définir un robot Web pour télécharger les résultats sur votre stockage cloud.
Vous pouvez facilement contrôler la portée rampante en ajustant sa largeur et sa profondeur avec des filtres. Web Crawler peut également utiliser divers paramètres de grattage, tels que l'agent de géo-localisation et d'utilisateur, pour augmenter le taux de réussite des travaux rampants. La plupart de ces paramètres de grattage dépendent de l'API du grattoir que vous utilisez.
Pour contrôler votre travail rampant, vous devez utiliser différents points de terminaison. Vous pouvez initier, arrêter et reprendre votre travail, obtenir des informations sur l'emploi, obtenir la liste des morceaux de résultat et obtenir les résultats. Voici les points de terminaison que nous utiliserons dans ce tutoriel rampant. Pour plus d'informations et des exemples de sortie, visitez notre documentation.
Point de terminaison: https://ect.oxylabs.io/v1/jobs
Méthode: POST
Authentification: Basic
En-têtes de demande: Content-Type: application/json
Ce point de terminaison livrera la liste des URL trouvées lors du traitement du travail.
Point de terminaison: https://ect.oxylabs.io/v1/jobs/{id}/sitemap
Méthode: GET
Authentification: Basic
Point de terminaison: https://ect.oxylabs.io/v1/jobs/{id}/aggregate
Méthode: GET
Authentification: Basic
Les résultats agrégés peuvent consister en beaucoup de données, nous les avons donc divisés en plusieurs morceaux en fonction de la taille du morceau que vous spécifiez. Utilisez ce point de terminaison pour obtenir une liste de fichiers de morceaux disponibles.
Point de terminaison: https://ect.oxylabs.io/v1/jobs/{id}/aggregate/{chunk}
Méthode: GET
Authentification: Basic
Avec ce point de terminaison, vous pouvez télécharger un morceau particulier du résultat global. Le contenu du corps de réponse dépend du type de sortie que vous choisissez.
Le résultat peut être l'un des éléments suivants:
Un index (une liste des URL)
Un fichier JSON agrégé avec tous les résultats analysés
Un fichier JSON agrégé avec tous les résultats HTML
Pour votre commodité, nous avons mis tous les paramètres disponibles que vous pouvez utiliser dans le tableau ci-dessous. Il peut également être trouvé dans notre documentation.
Paramètre | Description | Valeur par défaut |
---|---|---|
URL | L'URL du point de départ | - |
filters | Ces paramètres sont utilisés pour configurer la largeur et la profondeur du travail rampant, ainsi que pour déterminer quelles URL doivent être incluses dans le résultat final. Voir cette section pour plus d'informations. | - |
filters:crawl | Spécifie les robots d'exploitation Web URL dans le résultat final. Voir cette section pour plus d'informations. | - |
filters:process | Spécifie les URL WEB Crawler grattera. Voir cette section pour plus d'informations. | - |
filters:max_depth | Détermine la longueur maximale des chaînes d'URL Le robot Web suivra. Voir cette section pour plus d'informations. | 1 |
scrape_params | Ces paramètres sont utilisés pour affiner la façon dont nous effectuons les travaux de grattage. Par exemple, vous voudrez peut-être que nous exécutions JavaScript tout en rampant un site, ou vous préférez que nous utilisions des proxys à partir d'un emplacement particulier. | - |
scrape_params:source | Voir cette section pour plus d'informations. | - |
scrape_params:geo_location | L'emplacement géographique pour lequel le résultat doit être adapté. Voir cette section pour plus d'informations. | - |
scrape_params:user_agent_type | Type de périphérique et navigateur. Voir cette section pour plus d'informations. | desktop |
scrape_params:render | Permet le rendu JavaScript. Utiliser lorsque la cible nécessite JavaScript pour charger du contenu. Si vous souhaitez utiliser cette fonctionnalité, définissez la valeur du paramètre sur HTML. Voir cette section pour plus d'informations. | - |
output:type_ | Le type de sortie. Nous pouvons retourner un plan du site (liste des URL trouvés en rampant) ou un fichier agrégé contenant des résultats HTML ou des données analysées. Voir cette section pour plus d'informations. | - |
upload | Ces paramètres sont utilisés pour décrire l'emplacement de stockage cloud où vous aimeriez que nous mettons le résultat une fois que nous aurons terminé. Voir cette section pour plus d'informations. | - |
upload:storage_type | Définissez le type de stockage cloud. La seule valeur valide est S3 (pour AWS S3). GCS (pour Google Cloud Storage) arrive bientôt. | - |
upload:storage_url | L'URL du seau de stockage. | - |
L'utilisation de ces paramètres est simple, car vous pouvez les transmettre avec la charge utile de la demande. Ci-dessous, vous pouvez trouver des exemples de code dans Python.
Pour plus de simplicité, vous pouvez utiliser Postman pour faire des demandes rampantes. Téléchargez cette collection Postman pour essayer tous les points de terminaison du robot Web. Voici un tutoriel vidéo étape par étape que vous pouvez suivre:
Comment ramper un site Web: guide étape par étape
Pour faire des demandes HTTP dans Python, nous utiliserons la bibliothèque des demandes. Installez-le en entrant ce qui suit dans votre terminal:
pip install requests
Pour gérer les résultats HTML, nous utiliserons la bibliothèque BeautifulSoup4 pour analyser les résultats et les rendre plus lisibles. Cette étape est facultative, mais vous pouvez installer cette bibliothèque avec:
pip install BeautifulSoup4
Dans l'exemple suivant, nous utilisons le paramètre sitemap
pour créer un travail qui explore la page d'accueil d'Amazon et obtient une liste d'URL trouvées dans la page de départ. Avec les paramètres crawl
et process
définis sur “.*”
, Web Crawler suivra et renverra toute URL Amazon. Ces deux paramètres utilisent des expressions régulières (regex) pour déterminer les URL doivent être rampées et traitées. Assurez-vous de visiter notre documentation pour plus de détails et de ressources utiles.
Nous n'avons pas besoin d'inclure le paramètre source
car nous ne grattant pas encore le contenu des URL. À l'aide du module json
, nous écrivons les données dans un fichier .json , puis, avec le module pprint
, nous imprimons le contenu structuré. Voyons l'exemple:
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 ())
Selon la taille de la demande, le processus peut prendre un peu de temps. Vous pouvez vous assurer que le travail est terminé en vérifiant les informations du travail . Lorsque cela est fait, envoyez une autre demande au point de terminaison du site de site https://ect.oxylabs.io/v1/jobs/{id}/sitemap
pour renvoyer une liste d'URL. Par exemple:
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 ())
Pour obtenir du contenu analysé, utilisez le paramètre parsed
. En utilisant l'exemple ci-dessous, nous pouvons ramper toutes les URL trouvées sur cette page Amazon, puis analyser le contenu de chaque URL. Cette fois, nous utilisons la source amazon
car nous grattant le contenu de la page Amazon spécifiée. Alors, voyons tout cela assemblé dans 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 ())
Notez que si vous souhaitez utiliser le paramètre geo_location
Lors de la gratte des pages Amazon, vous devez définir sa valeur sur le code zip / postal de l'emplacement préféré. Pour plus d'informations, visitez cette page dans notre documentation.
Une fois le travail terminé, vous pouvez vérifier le nombre de morceaux de votre demande, puis télécharger le contenu à partir de chaque morceau avec ce point de terminaison: https://ect.oxylabs.io/v1/jobs/{id}/aggregate/{chunk}
/; https://ect.oxylabs.io/v1/jobs/{id}/aggregate/{chunk}
. Par exemple, avec l'extrait de code suivant, nous imprimons le premier morceau:
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 ())
Le code pour obtenir les résultats HTML ne diffère pas beaucoup du code dans la section précédente. La seule différence est que nous avons défini le paramètre type_
sur html
. Voyons l'exemple de code:
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 ())
Encore une fois, vous devrez faire une demande pour récupérer chaque morceau du résultat. Nous utiliserons la bibliothèque BeautifulSoup4 pour analyser HTML, mais cette étape est facultative. Nous écrivons ensuite le contenu analysé dans un fichier .html . L'exemple de code ci-dessous télécharge le contenu du premier morceau:
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 )
Vous pouvez modifier les fichiers de code selon vos besoins.
Ce didacticiel a couvert les aspects fondamentaux de l'utilisation de robots Web. Nous vous recommandons d'examiner notre documentation pour plus d'informations sur l'utilisation des points de terminaison et des paramètres de requête. Si vous avez des questions, vous pouvez toujours nous contacter à [email protected] ou via le chat en direct sur notre site Web.