Table des matières
Qu'est-ce que le chrome sans tête et le marionnettiste?
Pourquoi utiliser des marionnettiste pour le grattage Web?
Caractéristiques clés pour les tests
Meilleures pratiques et conseils
Limitations et alternatives
Maison interface Web Tutoriel H5 Chrome sans tête et marionnettiste pour le grattage et les tests Web

Chrome sans tête et marionnettiste pour le grattage et les tests Web

Jul 30, 2025 am 05:06 AM

Le marionnettiste et le chrome sans tête sont des outils puissants pour gérer les sites Web à forte intensité de JavaScript. La réponse est qu'ils réalisent que le contenu dynamique rampe et les tests automatisés en simulant un véritable environnement de navigateur. 1. Headless Chrome s'exécute en mode Interfaceless, peut exécuter des ressources JavaScript et de chargement; 2. Puppeneer, en tant que bibliothèque Node.js, fournit un chrome de contrôle de l'API et peut automatiser l'interaction de la page; 3. Comparé aux robots statiques, il peut obtenir un contenu rendu dynamique, gérer le chargement asynchrone et simuler les opérations utilisateur; 4. Applicable au spa, tests de processus de connexion, captures d'écran et analyse des performances; 5. Les mécanismes de contre-rédaction doivent être évités lors de l'utilisation, tels que la définition des en-têtes de demande raisonnable et l'intervention des ressources non essentielles; 6. Il existe des limites telles qu'une consommation élevée des ressources et une détection facile. Le dramaturge ou le sélénium peut être utilisé à la place, donc cette combinaison est toujours une solution fiable lorsqu'un contexte de navigateur réel est requis.

Chrome sans tête et marionnettiste sont des outils puissants pour le grattage Web et les tests automatisés, en particulier lorsqu'ils traitent avec des sites Web modernes en JavaScript. Contrairement aux outils de grattage traditionnels qui analysent uniquement le HTML statique, les marionnettistes peuvent rendre les pages Web complètes comme un véritable utilisateur le verrait dans le navigateur - ce qui le rend idéal pour le contenu dynamique.

Voici comment ils fonctionnent ensemble et pourquoi ils sont utiles.


Qu'est-ce que le chrome sans tête et le marionnettiste?

Chrome sans tête est un mode du navigateur Chrome qui s'exécute sans interface utilisateur graphique (GUI). Il remplit toutes les mêmes fonctions que Chrome ordinaire - chargement des pages, exécutant JavaScript, manipulant CSS - mais le fait en arrière-plan.

Puppeteer est une bibliothèque Node.js développée par l'équipe Chrome qui fournit une API de haut niveau pour contrôler le chrome sans tête (ou complet) via le protocole Devtools. Bien que conçu à l'origine pour les tests, il est largement utilisé pour le grattage, la génération de PDF, la capture de capture d'écran et la surveillance des performances.

Vous pouvez considérer la marionnettiste comme une télécommande pour Chrome - des actions automatisées comme cliquer sur les boutons, remplir les formulaires et naviguer les pages.


Pourquoi utiliser des marionnettiste pour le grattage Web?

De nombreux sites Web chargent aujourd'hui du contenu à l'aide de frameworks JavaScript comme React, Angular ou Vue. Des outils comme requests et BeautifulSoup dans Python ne peuvent pas exécuter JavaScript, ils manquent donc la plupart du contenu réel.

Marionnettiste résout ceci par:

  • Rendre le contenu généré par JavaScript
  • En attendant que les éléments se chargent (par exemple, des images chargées de paresseux ou un parchemin infini)
  • Gestion des cookies d'authentification et de session
  • Interagir avec la page (clics, saisie d'entrée, etc.)

Par exemple, le grattage d'un site comme Airbnb ou une application à une seule page (SPA) devient réalisable car le marionnettiste attend que le Dom mette à jour après les appels d'API.

 const puppeteer = require ('puppeteer');

(async () => {
  const Browser = Await Puppeteer.Launch ();
  const page = attendre le navigateur.newPage ();
  Await Page.goto ('https://example-quotes-site.com', {Waittuntil: 'NetworkIdle2'});

  const Citations = attendre page.evaluate (() => {
    return array.from (document.QuerySelectorall ('. Quote')). map (q => ({
      Texte: Q.QuerySelector ('. Texte'). InnerText,
      Auteur: Q.QuerySelector ('. Auteur'). InnerText
    }));
  });

  console.log (citations);
  attendre le navigateur.close ();
}) ();

Ce script charge une page, attend jusqu'à ce qu'il soit principalement inactif (c'est-à-dire des ressources asynchrones chargées), puis extrait les données du DOM rendu.


Caractéristiques clés pour les tests

Le marionnettiste est également excellent pour les tests de bout en bout (E2E):

  • Test de soumission de formulaire : automatiser les flux de connexion ou les processus de paiement.
  • Régression visuelle : prenez des captures d'écran avant et après les modifications pour détecter les décalages d'interface utilisateur.
  • Audit des performances : intégrer avec Chrome Devtools pour mesurer les temps de chargement, LCP, FID, etc.
  • Rapports de couverture : Voir quel JavaScript a été exécuté lors d'un test.

Exemple: tester un formulaire de connexion

 Await Page.Type ('# Username', 'TesUser');
attendre page.type («# mot de passe», «mot de passe123»);
attendre page.click («# login-btn»);
attendre page.WaitFornavigation ();

attendre (attendre page.url ()) .tobe ('https://example.com/dashboard');

Cela imite le comportement réel de l'utilisateur et garantit que le flux complet fonctionne.


Meilleures pratiques et conseils

Pour utiliser le marionnettiste efficacement et éviter la détection (en particulier pour le grattage), gardez ces conseils à l'esprit:

  • Évitez la détection comme un bot :

    • Utiliser --disable-blink-features=AutomationControlled Flag
    • Définir des agents utilisateur réalistes et des tailles de fenêtre
    • Ajouter de petits retards entre les actions
  • Améliorer les performances :

    • Exécutez en mode sans tête ( headless: true )
    • Bloquer les ressources inutiles (images, CSS, publicités) si ce n'est pas nécessaire
       attendre page.setRequestInterception (true);
      page.on ('requête', req => {
      if (['Image', 'Stylesheet', 'Font']. Inclut (req.resourceType ())) {
        req.abort ();
      } autre {
        req.Continue ();
      }
      });
    • Gérer le contenu dynamique :

      • Utilisez page.waitForSelector() ou page.waitForTimeout() pour attendre les éléments
      • Préférez waitForFunction() pour des conditions complexes
    • Courir à grande échelle :

      • Utilisez puppeteer-core avec des instances chromées externes (par exemple, docker, navigateur sans
      • Gérer attentivement les instances du navigateur pour éviter les fuites de mémoire

    • Limitations et alternatives

      Bien que puissant, le marionnettiste a quelques inconvénients:

      • Utilisation plus élevée des ressources que les clients HTTP simples
      • Les appels API plus lents que directs
      • Peut être détecté par des systèmes anti-bot (par exemple, cloudflare)
      • Node primaire.js uniquement (bien que Python ait pyppeteer , c'est moins stable)

      Les alternatives comprennent:

      • Playwright (par Microsoft): prend en charge plusieurs navigateurs (Chromium, Firefox, WebKit), des API plus robustes, une meilleure émulation mobile.
      • Selenium avec WebDriver : plus mature, prend en charge plus de langues, mais plus lente et plus complexe à configurer.

      Fondamentalement, si vous avez besoin de gratter ou de tester un site qui s'appuie fortement sur JavaScript, Puppeteer Headless Chrome est un choix solide et bien documenté. Ce n'est pas magique - vous devez toujours gérer les erreurs, les retards et les changements de site - mais cela vous donne un véritable environnement de navigateur avec lequel travailler.

      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.

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

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

Tutoriel PHP
1525
276
Pourquoi mon image n'apparaît-elle pas dans HTML? Pourquoi mon image n'apparaît-elle pas dans HTML? Jul 28, 2025 am 02:08 AM

L'image non affichée est généralement causée par un mauvais chemin de fichier, un nom ou une extension de fichier incorrect, des problèmes de syntaxe HTML ou un cache de navigateur. 1. Assurez-vous que le chemin SRC est cohérent avec l'emplacement réel du fichier et utilisez le chemin relatif correct; 2. Vérifiez si le cas de fichier et l'extension correspondent exactement et vérifiez si l'image peut être chargée en entrant directement l'URL; 3. Vérifiez si la syntaxe TAG IMG est correcte, assurez-vous qu'il n'y a pas de caractères redondants et que la valeur d'attribut ALT est appropriée; 4. Essayez de forcer l'actualisation de la page, de nettoyer le cache ou d'utiliser le mode incognito pour éliminer les interférences du cache. Le dépannage dans cet ordre peut résoudre la plupart des problèmes d'affichage d'image HTML.

CMS sans tête et génération de sites statiques (SSG) avec Astro CMS sans tête et génération de sites statiques (SSG) avec Astro Jul 26, 2025 am 07:31 AM

Utilisez des CM sans tête en conjonction avec la génération de sites statiques d'Astro (SSG) pour créer des sites Web hautes performances et axés sur le contenu. 2.Astro obtient du contenu de la CMS sans tête (comme la santé mentale, le contenu, la strapi, le wordpress ou les datocms) via des API et des pré-rendements en tant que pages statiques. 3. Utilisez getStaticPaths () pour générer le chemin de la page, obtenir des données via les appels CMSAPI et séparer le contenu de la frontale. 4. Les avantages comprennent d'excellentes performances (chargement rapide, SEO-friendly), une expérience d'édition amicale, une flexibilité architecturale, une haute sécurité et une évolutivité. 5. Les mises à jour du contenu nécessitent une reconstruction du site, et vous pouvez utiliser CMSWebHook pour toucher

Comment utiliser les boutons radio dans HTML5? Comment utiliser les boutons radio dans HTML5? Jul 21, 2025 am 01:08 AM

La clé de l'utilisation de boutons radio dans HTML5 est de comprendre comment ils fonctionnent et d'organiser correctement la structure du code. 1. L'attribut de nom de chaque bouton radio doit être le même pour obtenir une sélection mutuellement exclusive; 2. Utilisez des balises d'étiquette pour améliorer l'accessibilité et cliquer sur l'expérience; 3. Il est recommandé d'envelopper chaque option dans une div ou un étiquette pour améliorer la clarté structurelle et le contrôle du style; 4. Définissez les sélections par défaut via l'attribut vérifié; 5. La valeur de la valeur doit être concise et significative, ce qui est pratique pour le traitement de soumission de formulaire; 6. Le style peut être personnalisé via CSS, mais la fonction doit être assurée d'être normale. La maîtrise de ces points clés peut éviter efficacement des problèmes courants et améliorer l'efficacité de l'utilisation.

H5 Barcode et QR Code Scanning avec GetUserMedia H5 Barcode et QR Code Scanning avec GetUserMedia Jul 20, 2025 am 02:03 AM

La page H5 réalise les fonctions de numérisation de code-bar et de code QR, principalement en appelant GetUserMedia pour obtenir des autorisations de caméra et la combiner avec la bibliothèque de décodage pour une identification en temps réel. 1. Utilisez d'abord GetUserMedia pour obtenir des autorisations de caméra et lier le flux vidéo à la balise. Faites attention aux différences dans l'environnement HTTPS et la prise en charge des appareils; 2. En interceptant les trames vidéo et en extraction des données d'image, contrôlez la fréquence de reconnaissance pour optimiser les performances; 3. Utilisez des bibliothèques de décodage telles que le zxing ou les quaggajs pour la reconnaissance d'image, il est recommandé d'empêcher les résultats de reconnaissance; 4. En termes de compatibilité, les contraintes vidéo peuvent être définies pour optimiser l'adaptation des périphériques et améliorer l'expérience utilisateur via des invites d'interface utilisateur; 5. En termes d'optimisation des performances, il est recommandé d'utiliser un travailleur Web pour effectuer des tâches de décodage pour éviter de bloquer le principal

API H5 Web MIDI pour les surfaces de contrôle avancées API H5 Web MIDI pour les surfaces de contrôle avancées Jul 19, 2025 am 03:04 AM

Pour utiliser WebMidiapi pour créer une interface de contrôle avancée, vous devez d'abord obtenir des autorisations de périphérique, demander l'autorisation via Navigator.RequestMidiaCcess () et les périphériques d'entrée et de sortie de processus; Deuxièmement, écoutez ou envoyez des messages MIDI, tels que l'écoute des opérations de bouton via l'entrée.addeventListener, et envoyez des instructions de contrôle LED via la sortie.Send; Vous devez également vous adapter à différents contrôleurs, établir des fichiers de configuration ou fournir des fonctions de mappage définies par l'utilisateur; Enfin, faites attention aux compétences en développement telles que la réponse en temps réel, la gestion des erreurs, les outils de débogage et la correspondance des numéros de canal.

La balise  est-elle toujours utilisée dans HTML5? La balise est-elle toujours utilisée dans HTML5? Jul 21, 2025 am 02:47 AM

Oui, il fait partie de HTML5, mais son utilisation a progressivement diminué et est controversée. Utilisé pour combiner le titre principal avec le sous-titre afin que seul le plus haut niveau de titres soit identifié dans le plan du document; Par exemple, le titre principal et le sous-titre peuvent être enveloppés pour indiquer qu'ils ne sont que des titres auxiliaires plutôt que des titres de chapitre indépendants; Cependant, les raisons pour lesquelles ils ne sont plus largement utilisées incluent: 1. Les lecteurs du navigateur et de l'écran leur sont un support incohérent, 2. Il existe des alternatives plus simples telles que l'utilisation de CSS pour contrôler les styles, 3. L'algorithme de contour du document HTML n'est pas largement pris en charge; Malgré cela, il peut toujours être pris en compte dans des sites Web ou des documents avec des exigences sémantiques élevées; Alors que dans la plupart des cas, les développeurs ont tendance à utiliser un seul, à gérer les styles via CSS et à maintenir des niveaux de titre clairs.

L'importance du HTML sémantique pour le référencement et l'accessibilité L'importance du HTML sémantique pour le référencement et l'accessibilité Jul 30, 2025 am 05:05 AM

SémantichtmlimprovesbothseoandaccessibilityByusing a été ultime

API d'informations réseau H5 pour le chargement adaptatif API d'informations réseau H5 pour le chargement adaptatif Jul 23, 2025 am 04:15 AM

L'API NetworkInformation de H5 peut optimiser les stratégies de chargement en jugeant le type de réseau. ① Utilisez Navigator.Connection pour obtenir le type de réseau et l'état en ligne; ② décider de charger des ressources à haute définition ou un contenu léger en fonction des valeurs efficaces (telles que lent-2g, 4g, 5g); ③ Ajustez dynamiquement la stratégie de chargement en écoutant des événements de changement; ④ Faites attention à des problèmes tels que la compatibilité, les restrictions limitées de support iOS et de mode de confidentialité.

See all articles