L'extraction de données sur plusieurs pages via la pagination est une pratique courante, car la plupart du temps, vous aurez besoin de plus d'une page de données pour votre projet.
Si vous rencontrez un problème où Octoparse continue de scraper la dernière page sans s'arrêter, c'est probablement parce qu'il détecte et clique encore sur le bouton "Suivant" même après avoir atteint la dernière page. Ce problème est souvent appelé "boucle infinie".
Il existe deux solutions pour y remédier. Vous pouvez choisir celle qui convient le mieux à votre cas d'utilisation.
1. Définir une condition d'arrêt pour la boucle – Quitter la boucle lorsque
L'option Quitter la boucle lorsque vous permet d'arrêter la boucle de pagination après un certain nombre de répétitions. Par exemple, si vous souhaitez scraper les 50 premières pages de données, vous pouvez définir 50 comme nombre de répétitions. Octoparse cliquera alors sur le bouton Suivant exactement 50 fois, puis quittera la boucle de pagination une fois la page 50 atteinte.
C'est une méthode simple et efficace pour résoudre le problème si vous connaissez à l'avance le nombre exact de pages à extraire.
Suivez les étapes ci-dessous pour configurer les conditions de fin de boucle :
Accédez aux paramètres de la pagination.
Recherchez l'option Quitter la boucle losque en bas des paramètres.
Cochez la case et saisissez un nombre pour définir le nombre de répétitions.
Cliquez sur Appliquer pour enregistrer les nouveaux paramètres.
2. Modifier le XPath
Si le problème ne peut pas être résolu en définissant une condition d'arrêt de boucle, il peut être nécessaire de modifier le XPath de la pagination.
Octoparse utilise XPath pour localiser les éléments sur la page, y compris le bouton Suivant. Dans la plupart des cas, Octoparse génère automatiquement un XPath précis, mais il peut être nécessaire de le modifier manuellement.
Par exemple, dans le cas d'une boucle infinie, vous devrez écrire un XPath qui identifie précisément le bouton Suivant sur toutes les pages, sauf la dernière.
💡 Astuce : Nous vous recommandons d'utiliser l'extension Chrome XPath Helper pour rédiger le XPath.
Vous pouvez consulter le tutoriel Qu'est-ce que XPath et comment l'utiliser dans Octoparse pour apprendre à écrire un XPath précis.
Prenons un exemple pour vous montrer comment écrire un XPath adapté à cette situation.
Comme vous pouvez le voir sur les captures d'écran ci-dessous, le bouton Suivant est localisé par un XPath généré automatiquement, aussi bien sur la première page que sur la dernière page, à l'aide de XPath Helper.
Sur la première page :
Sur la dernière page :
Maintenant, nous devons identifier la différence entre les boutons sur la première et la dernière page, puis utiliser cette différence pour écrire un XPath précis.
Pour cela, faites un clic droit sur le bouton Suivant dans Chrome et sélectionnez Inspecter pour analyser le code HTML du bouton.
Sur la première page :
Sur la dernière page :
Remarquez que le code HTML des boutons est différent : sur la dernière page, l’attribut "aria-disabled" est présent.
Nous allons donc utiliser cette différence pour écrire un nouveau XPath qui localise le bouton Suivant uniquement lorsqu’il n’est pas sur la dernière page.
Nouveau XPath :
//a[@class="pagination__next icon-link"][not(@aria-disabled)]
Il suffit de saisir ce XPath dans XPath Helper pour vérifier s’il détecte correctement le bouton Suivant sur la première page mais pas sur la dernière page.
Sur la première page :
Sur la dernière page :
Super ! Nous n’avons aucun élément correspondant sur la dernière page, ce qui est exactement ce que nous recherchons : un XPath qui sélectionne le bouton Suivant uniquement sur les pages précédentes, mais pas sur la dernière.
Bien sûr, vous pouvez être encore plus précis en vérifiant si le bouton Suivant est bien détecté sur les pages 2, 3, etc.
Une fois votre nouveau XPath prêt, appliquez-le à la boucle de pagination en suivant ces étapes :
Accédez aux paramètres de la Pagination
Remplacez l’ancien XPath par le nouveau XPath
Cliquez sur Appliquer pour enregistrer les modifications
En résumé : Le problème de boucle infinie n'est pas compliqué à résoudre.
Selon vos besoins en extraction de données, vous pouvez :
Définir des conditions pour arrêter la boucle.
Modifier le XPath pour éviter que le bouton Suivant soit cliqué sur la dernière page.
Avec ces solutions, vous pourrez corriger facilement ce problème.