Commencer par la requête, pas par l’interface
Avant d’écrire la logique, ouvrez les DevTools et observez les changements lors du passage au lot suivant.- Ouvrez l’onglet Network et filtrez sur Fetch/XHR.
- Cliquez sur la page suivante, faites défiler ou appuyez sur Charger plus.
- Examinez l’URL, les paramètres, le corps de la requête et la réponse.
- Décidez s’il faut suivre des liens, interagir avec la page ou appeler directement une API.
offset=40, tandis qu’un lien peut actualiser les résultats avec JavaScript après le changement d’URL.
Pages numérotées
C’est le cas le plus simple, car l’emplacement suivant apparaît dans l’URL :0, aux paramètres p ou start et aux sites qui renvoient la première page lorsque le numéro dépasse la limite. Cette répétition est pire qu’une page vide, car elle crée silencieusement des doublons.
Liens Suivant
Certains sites n’affichent aucun numéro, seulement un lien ou une flèche « Suivant ». Si l’élément est une ancre normale, suivez le lien :seen_urls est importante : certains sites mal configurés renvoient depuis le dernier lien vers la page courante ou la première. Vérifiez aussi aria-disabled="true", disabled ou une classe disabled.
Défilement infini
Il semble exiger un navigateur, mais repose généralement sur une API. Faites défiler avec les DevTools ouverts et cherchez la requête du lot suivant ; les paramètres s’appellent souventoffset, page, after, cursor ou limit.
Si l’endpoint est exploitable, appelez-le directement :
Boutons Charger plus
Un tel bouton est un défilement infini contrôlé. Le clic permet d’attendre, valider le nouveau nombre d’éléments et réessayer en cas d’échec. Utilisez l’API si elle est propre ; sinon, cliquez en boucle :API avec offset et curseur
Les sites modernes paginent souvent au niveau de l’API. L’offset demande une position numérique :Retry-After, réessayez les échecs temporaires avec un délai progressif et enregistrez la progression si recommencer depuis la première page serait coûteux.
Pagination hybride
Les sites combinent souvent les modèles :- Une catégorie possède des pages numérotées, mais chacune charge davantage de produits après défilement.
- Une page de recherche commence avec un bouton Charger plus, puis passe à des liens numérotés.
- Une interface à onglets possède une Pagination distincte pour « Nouveau », « Populaire » et « Promotions ».
- Une liste pagine les URL des résultats, puis chaque page détaillée possède ses propres avis ou commentaires paginés.
Mesures de protection pratiques
- Définissez un signal d’arrêt. Résultat vide, lien absent, bouton désactivé,
hasNextPage: false, curseur répété et limite d’itérations sont valides. - Détectez les doublons. Stockez des ID stables ou URL canoniques.
- Limitez le rythme. Ajoutez de petites attentes aléatoires entre les lots ; attendez les changements de contenu plutôt qu’un délai fixe.
- Journalisez les échecs. Après plusieurs tentatives, notez l’URL ou le curseur et continuez si possible.
- Préférez les API lorsqu’elles sont légitimes et stables. Elles sont généralement plus rapides et faciles à valider.
- Utilisez un outil visuel si la vitesse de configuration prime. Dans Octoparse, les flux Suivant, Charger plus et défilement infini se configurent visuellement, puis s’exécutent localement ou dans le cloud.