Table des matières
Analyse des problèmes
Solution
Exemple de code
Choses à noter
Résumer
Maison interface Web js tutoriel Solution au problème des données de la page Web rampantes avec des marionnettes pour retourner les tableaux vides

Solution au problème des données de la page Web rampantes avec des marionnettes pour retourner les tableaux vides

Sep 19, 2025 am 07:51 AM

Solution au problème des données de la page Web rampantes avec des marionnettes pour retourner les tableaux vides

Cet article vise à résoudre le problème du renvoi d'un tableau vide lors des données de la page Web rampant à l'aide de marionnetteer. En analysant des raisons courantes et en fournissant des exemples de code optimisés, nous pouvons aider les développeurs à ramper les données du site Web cible plus efficacement et à éviter les résultats rampants lorsque le résultat rampant est vide. Cet article se concentrera sur les liens clés tels que l'optimisation du sélecteur, le chargement des éléments de page et l'extraction des données.

Analyse des problèmes

Lorsque vous utilisez Puppeteer pour les données de la page Web rampant, il y a généralement plusieurs raisons de retourner un tableau vide:

  1. Erreur de sélecteur: le sélecteur CSS ou l'expression XPATH est incorrect, ce qui n'a pas pu être trouvé l'élément cible.
  2. Page non entièrement chargée: Lors de l'exécution d'une opération de rampe, la page n'a peut-être pas été entièrement chargée, ce qui entraîne l'élément non présent.
  3. Contenu dynamique: les données cibles sont chargées dynamiquement via JavaScript, et Puppeteer doit attendre que les données soient chargées.
  4. Les éléments sont supprimés ou masqués: l'élément cible est supprimé ou caché avant d'être rampé, ce qui entraîne des données non récupérées.
  5. Erreur de logique de boucle: lorsque le bouclage à travers les éléments, le jugement de l'index ou de la condition est mauvais, ce qui n'a pas réussi à extraire correctement toutes les données.

Solution

En réponse aux problèmes ci-dessus, les mesures suivantes peuvent être prises:

  1. Sélecteur optimisé: utilisez des sélecteurs plus précis pour assurer un positionnement unique de l'élément cible. Vous pouvez utiliser les outils de développeur du navigateur pour aider à écrire des sélecteurs.
  2. Attendez que la page charge: utilisez la page.WaitForselector () ou Page.WaitForttimeout () et d'autres méthodes pour vous assurer que l'élément de page est chargé avant d'effectuer l'opération rampante.
  3. Processus Contenu dynamique: utilisez Page.WaitForFunction () et d'autres méthodes pour attendre que les données dynamiques se chargent.
  4. Vérifiez si l'élément existe: Avant de saisir l'élément, utilisez la méthode de la page. $ () Pour vérifier si l'élément existe pour éviter les erreurs causées par la non-existence de l'élément.
  5. Optimiser la logique de la boucle: vérifiez soigneusement l'index de la boucle et le jugement conditionnel pour vous assurer que tous les éléments cibles peuvent être correctement traversés.

Exemple de code

Voici un exemple de code de marionnet optimisé pour ramper les noms de bébé et les significations sur les pages Web.

 const puppeteer = require ("puppeteer");
const Express = require ("express");
const CORS = require ("CORS");
const app = express ();
app.use (Cors ());
Soit les données = [];

(async () => {
  const Browser = Await Puppeteer.Launch ({
    Sans tête: vrai,
    DefaultViewport: null,
  });
  const page = attendre le navigateur.newPage ();

  pour (Soit PageNumber = 1; PageNumber  i`);

    // Boucle à travers l'élément pour (Soit i = 0; i <nameelements.length i laissez fullname="" let nay="AWAIT" page.evalu> El.TextContent, NameElements [i]);
      Soit Signification = Await Page.Evaluate (El => El.TextContent, SignificationElements [i]);
      fullname = `$ {name.split (/ [\ n \ t] /). join (''). Trim ()}, $ {signifiant}`;
      data.push ({fullName});
    }
  }

  console.log (données);
  attendre le navigateur.close ();
}) ();

app.get ("/", (req, res) => {
  res.status (200) .json (données);
});

app.Listen (3000, () => {
  console.log ("application est en cours d'exécution ...");
});</nameelements.length>

Explication du code:

  • Optimisation du sélecteur: utilisez A.NSG__NAME et DIV.NSG__MEAning> I pour localiser le nom et le sens des éléments plus précisément.
  • Supprimer l'action de clic inutile: supprimer l'action contextuelle de clic car cela n'a rien à voir avec le rampe de données.
  • Traversion en boucle: Utilisez pour Loop pour faire boucler à travers tous les éléments de nom et de sens et les combiner en données complètes.
  • Traitement de texte: utilisez Split (/ [\ n \ t] /). JOIN (''). Trim () pour nettoyer les données de texte et supprimer les pauses, les onglets et les espaces.

Choses à noter

  • Mécanisme anti-climat du site Web: certains sites Web peuvent adopter des mécanismes anti-climat, tels que les codes de vérification, les restrictions IP, etc. Il est nécessaire de prendre des contre-mesures correspondantes basées sur des conditions réelles, telles que l'utilisation de l'IP proxy, la configuration de l'utilisateur, etc.
  • Conformez-vous aux règles du site Web: lorsque les données de la page Web rampantes, vous devez respecter le protocole Robots.txt du site Web pour éviter une rampe excessive pour éviter de faire face au site Web.
  • Nettoyage des données: les données capturées peuvent contenir du bruit et doivent être nettoyées et traitées pour obtenir des informations efficaces.

Résumer

En optimisant les sélecteurs, en attendant le chargement des pages, en traitement des contenus dynamiques, en vérifiant si les éléments existent et en optimisant la logique de boucle, le problème des données de page Web de marionnettiste et le rendement des tableaux vides peuvent être efficacement résolus. Dans les applications réelles, les ajustements et les optimisations doivent être effectués en fonction de circonstances spécifiques afin d'obtenir des résultats rampants idéaux.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Stock Market GPT

Stock Market GPT

Recherche d'investissement basée sur l'IA pour des décisions plus intelligentes

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

JavaScript réalise l'effet de commutation d'image click-through: tutoriel professionnel JavaScript réalise l'effet de commutation d'image click-through: tutoriel professionnel Sep 18, 2025 pm 01:03 PM

Cet article présentera comment utiliser JavaScript pour réaliser l'effet de cliquer sur les images. L'idée principale est d'utiliser l'attribut Data- * de HTML5 pour stocker le chemin d'image alternatif et écouter des événements de clic via JavaScript, changez dynamiquement les attributs SRC, réalisant ainsi la commutation d'image. Cet article fournira des exemples de code et des explications détaillés pour vous aider à comprendre et à maîtriser cet effet interactif couramment utilisé.

Comment obtenir l'emplacement de l'utilisateur avec l'API Geolocation en JavaScript? Comment obtenir l'emplacement de l'utilisateur avec l'API Geolocation en JavaScript? Sep 21, 2025 am 06:19 AM

Tout d'abord, vérifiez si le navigateur prend en charge GeolocationAPI. Si vous êtes pris en charge, appelez getCurrentPosition () pour obtenir les coordonnées de l'emplacement actuelles de l'utilisateur et obtenir les valeurs de latitude et de longitude grâce à des rappels réussis. Dans le même temps, fournissez des exceptions de traitement des rappels d'erreur tels que l'autorisation de déni, l'indisponibilité de l'emplacement ou du délai d'attente. Vous pouvez également transmettre des options de configuration pour activer une précision élevée, définir le délai d'expiration et la période de validité du cache. L'ensemble du processus nécessite l'autorisation de l'utilisateur et la gestion des erreurs correspondante.

Comment créer un intervalle répétitif avec SetInterval dans JavaScript Comment créer un intervalle répétitif avec SetInterval dans JavaScript Sep 21, 2025 am 05:31 AM

Pour créer un intervalle de répétition dans JavaScript, vous devez utiliser la fonction setInterval (), qui exécutera à plusieurs reprises des fonctions ou des blocs de code à des intervalles de millisecondes spécifiés. Par exemple, setInterval (() => {Console.log ("Exécuter toutes les 2 secondes");}, 2000) publiera un message toutes les 2 secondes jusqu'à ce qu'il soit effacé par ClearInterval (Interpalid). Il peut être utilisé dans les applications réelles pour mettre à jour les horloges, les serveurs de sondage, etc., mais faire attention à la limite de retard minimum et à l'impact du temps d'exécution de la fonction, et effacez l'intervalle dans le temps lorsqu'il n'est plus nécessaire pour éviter les fuites de mémoire. Surtout avant la désinstallation des composants ou la fermeture des pages, assurez-vous que

L'API de composition Nuxt 3 a expliqué L'API de composition Nuxt 3 a expliqué Sep 20, 2025 am 03:00 AM

L'utilisation du noyau de l'API de composition de Nuxt3 comprend: 1. DefinePageMeta est utilisée pour définir les méta-informations de la page, telles que le titre, la mise en page et le middleware, qui doivent être appelées directement et ne peuvent pas être placées dans des déclarations conditionnelles; 2. Usyhead est utilisé pour gérer les balises d'en-tête de page, prend en charge les mises à jour statiques et réactives et doit coopérer avec DefinePageMeta pour obtenir l'optimisation du référencement; 3. USEASYNCDATA est utilisé pour obtenir en toute sécurité des données asynchrones, gérer automatiquement l'état de chargement et d'erreur et prend en charge le contrôle d'acquisition de données du serveur et du client; 4. UseFetch est une encapsulation de usEasyncdata et $ fetch, qui dépente automatiquement la clé de demande pour éviter les demandes en double

Pièges et solutions communes pour l'accès à l'élément DOM en JavaScript Pièges et solutions communes pour l'accès à l'élément DOM en JavaScript Sep 15, 2025 pm 01:24 PM

Cet article vise à résoudre le problème du retour null lors de l'obtention d'éléments DOM via document.getElementById () dans JavaScript. Le noyau consiste à comprendre le synchronisation d'exécution du script et l'état de l'analyse DOM. En plaçant correctement la balise ou en utilisant l'événement téléchargé DomContent, vous pouvez vous assurer que l'élément est à nouveau tenté lorsqu'il est disponible, en évitant efficacement de telles erreurs.

Formatage des nombres en javascript: utilisez la méthode TofixEd () pour conserver les décimales fixes Formatage des nombres en javascript: utilisez la méthode TofixEd () pour conserver les décimales fixes Sep 16, 2025 am 11:57 AM

Ce tutoriel explique en détail comment formater les numéros en chaînes avec deux décimales fixes en JavaScript, même les entiers peuvent être affichés sous la forme de "# .00". Nous nous concentrerons sur l'utilisation de la méthode numéro.prototype.tofixed (), y compris sa syntaxe, sa fonctionnalité, son exemple de code et des points clés à noter, comme son type de retour étant toujours une chaîne.

Comment copier du texte dans le presse-papiers en javascript? Comment copier du texte dans le presse-papiers en javascript? Sep 18, 2025 am 03:50 AM

Utilisez la méthode WriteText de ClipboardAPI pour copier du texte dans le presse-papiers, il doit être appelé dans le contexte de sécurité et l'interaction utilisateur, prend en charge les navigateurs modernes et l'ancienne version peut être dégradée avec EXECCOMAND.

Comment créer une chaîne multi-lignes en JavaScript? Comment créer une chaîne multi-lignes en JavaScript? Sep 20, 2025 am 06:11 AM

ThebestatorreatEAmulti-linestringinjavascriptsisingstingTemplatalalswithbackticks, qui sepresereBreakenexactlyAswritten.

See all articles