


Données de page Web dynamique Crawl Utilisation du langage R: Extraction de contenu JavaScript basé sur le moteur V8
1. Défis des données Web dynamiques rampant
Dans les tâches de grattage Web, nous rencontrons souvent des situations où les données ne sont pas directement intégrées dans la structure HTML, mais sont générées dynamiquement et rendues sur le client via JavaScript. Les packages R traditionnels tels que XML ou RVest sont principalement utilisés pour analyser le contenu HTML statique. Lorsque les données cibles se trouvent dans des variables JavaScript ou chargées via des demandes AJAX, ces outils ne peuvent souvent pas obtenir directement les informations requises.
Prendre l'extraction d'une liste de pays à partir d'un site Web spécifique (comme https://www.fatf-gafi.org/countries/) à titre d'exemple, si vous essayez d'utiliser directement les données de lecture et HTMLParse, vous constaterez que la "liste de pays" affichée sur la page n'apparaît pas dans le code source HTML d'origine, mais est remplie dynamiquement via le code Javascript Javascript exécuté après la page HTML. C'est exactement pourquoi des techniques rampantes plus avancées, telles que des environnements d'exécution JavaScript sont nécessaires.
2. Solution: moteur V8 en R
Pour résoudre le problème de JavaScript en charge dynamiquement des données, nous pouvons profiter du package V8 dans R. Le package V8 fournit un moteur JavaScript et WebAssembly embarqué, ce qui nous permet d'exécuter directement du code JavaScript dans l'environnement R et d'accéder à ses résultats d'exécution. Cela signifie que si les données cibles sont stockées dans une variable JavaScript, nous pouvons exécuter le code JavaScript contenant la variable en R, puis extraire la valeur de la variable directement à partir du moteur V8.
3. Étapes d'implémentation et exemples de code
Voici des étapes spécifiques et des exemples de code R pour extraire les données des pages Web dynamiques à l'aide de packages V8.
3.1 Identifier les sources de données JavaScript
Tout d'abord, nous devons déterminer le fichier ou le script JavaScript qui contient les données cibles. Cela nécessite généralement de vérifier les outils de développeur de la page Web (F12), à la recherche de fichiers .js chargés dans l'onglet "réseau" ou "sources", ou à la recherche de balises en ligne
L'URL de ce fichier est: https://www.fatf-gafi.org/media/fatf/fatfv20/js/country-data-multi-lang.js.
3.2 Chargez la bibliothèque requise
Nous avons besoin de HTTP pour envoyer des demandes HTTP pour obtenir le contenu des fichiers JavaScript, V8 est utilisé pour effectuer JavaScript, et DPLYR et TIDYR sont utilisés pour le nettoyage et l'organisation des données ultérieures.
Bibliothèque (HTTR) # Utilisé pour envoyer HTTP Demandes Library (V8) # Utilisé pour exécuter JavaScript Bibliothèque (DPLYR) # pour les opérations de données Bibliothèque (TIDYR) # pour le tri des données
3.3 Obtenez du contenu JavaScript
Utilisez la fonction HTTPR :: Obtenez pour obtenir le contenu d'un fichier JavaScript. Le contenu (..., «texte») garantit que nous obtenons la réponse en texte brut.
# Définir l'URL d'un fichier javascript js_url <h4> 3.4 Initialiser le moteur V8 et exécuter JavaScript</h4><p> Créez un contexte V8, puis utilisez la méthode CT $ EVAL () pour exécuter le code JavaScript obtenu. Après l'exécution, les variables définies dans le code JavaScript (comme les pays) seront stockées à la mémoire du moteur V8.</p><pre class="brush:php;toolbar:false"> # Créer un contexte V8 CT <h4> 3.5 Extraire les données et les nettoyer</h4><p> Avec la méthode CT $ get ("variable_name"), nous pouvons extraire la valeur de la variable JavaScript spécifiée du contexte V8. Dans ce cas, la variable cible est les pays. Les données extraites sont généralement une structure de liste imbriquée, qui nécessite un aplatissement, en sélectionnant les colonnes requises et en supprimant les lignes non valides à l'aide de fonctions telles que Tidyr :: Unnest (), DpLyr :: Select () et DpLyr :: Filter ().</p><pre class="brush:php;toolbar:false"> # Obtenez la valeur de la variable «Pays» du contexte V8 # Unnest () Utilisé pour étendre les colonnes Nested DataFrame # select () utilisées pour sélectionner les colonnes requises # filter () Utilisé pour supprimer les lignes incomplètes (par exemple, les lignes avec nom na) extrait_data % inné (cols = c (groupes))%>% SELECT (C (1: 2, 4:14, 16))%>% # Sélectionnez les colonnes en fonction de la structure de données réelle, et certaines colonnes sont sélectionnées ici Filtre (! Is.na (nom)) # Imprimez les premières lignes de l'impression de données extraite et nettoyée (tête (extrait_data)))
Après avoir exécuté le code ci-dessus, extrait_data contiendra un cadre de données soigné contenant des informations de divers pays chargés dynamiquement à partir du site Web, y compris les noms de pays, les codes et diverses organisations auxquelles il appartient (tels que les FATF, les APG, etc.).
4. Précautions et résumé
- JavaScript Source Emplacement: Finding the correct JavaScript File ou Inline Script est la clé. Cela nécessite généralement une certaine capacité analytique à la structure des pages Web et aux demandes de réseau.
- Reconnaissance du nom de la variable: assurez-vous que le nom de variable JavaScript que vous avez extrait est correct et qu'il contient les données souhaitées.
- Compréhension de la structure des données: les données extraites de JavaScript peuvent exister sous la forme de listes, d'objets imbriqués ou de tableaux. La compréhension de sa structure aide à utiliser des outils comme Tidyr pour un nettoyage et un aplatissement efficaces des données.
- Dynamicité et stabilité: le code JavaScript du site Web peut être mis à jour, ce qui peut entraîner l'invalide de votre script rampant. Des inspections et un entretien réguliers sont nécessaires.
- Légalité et éthique: lors de la réalisation de toutes les activités de rampe Web, assurez-vous de respecter les conditions d'utilisation du site Web et l'accord Robots.txt et respecter les droits du propriétaire des données. Évitez un fardeau excessif sur le serveur.
Grâce au package V8, les utilisateurs de langage R peuvent surmonter efficacement les limites des analyseurs HTML traditionnels lors du traitement du contenu dynamique de la page Web, élargissant ainsi la portée de l'application R dans le domaine de la page Web de la page Web. Cette approche fournit des capacités puissantes pour extraire des données structurées à partir de sites Web complexes et axés sur JavaScript.
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!

Outils d'IA chauds

Undress AI Tool
Images de déshabillage gratuites

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

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

Clothoff.io
Dissolvant de vêtements AI

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 !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

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

Il s'agit d'un élément au niveau du bloc, utilisé pour diviser de grandes zones de contenu de bloc; Il s'agit d'un élément en ligne, adapté à l'emballage de petits segments de fragments de texte ou de contenu. Les différences spécifiques sont les suivantes: 1. Occuper exclusivement une ligne, une largeur et une hauteur, des marges intérieures et extérieures peuvent être définies, qui sont souvent utilisées dans des structures de mise en page telles que les en-têtes, les barres latérales, etc.; 2. N'enveloppez pas les lignes, n'occupez que la largeur du contenu et sont utilisés pour le contrôle du style local tel que la décoloration, le gras, etc.; 3. En termes de scénarios d'utilisation, il convient à l'organisation de mise en page et de structure de la zone globale, et est utilisé pour les ajustements de style à petite échelle qui n'affectent pas la disposition globale; 4. Lors de la nidification, il peut contenir des éléments et les éléments au niveau du bloc ne doivent pas être imbriqués à l'intérieur.

LinkRel = "Preload" est une technologie qui optimise les performances de chargement de page et est utilisée pour charger les ressources critiques à l'avance. Son objectif principal est de hiérarchiser le chargement des ressources essentielles au rendu de l'écran d'accueil, telles que les polices, les clés CSS / JS et les images d'écran d'accueil. Faites attention à l'utilisation: 1. Définissez correctement l'attribut AS pour spécifier le type de ressource; 2. Évitez les abus et empêchez une utilisation excessive de la bande passante; 3. Assurez-vous que les ressources seront réellement utilisées, sinon elle entraînera un gaspillage de demandes; 4. Ajouter un attribut de crossorigin aux ressources inter-domaines. Une méthode d'écriture incorrecte telle que l'absence d'attribut AS entraînera une précharge invalide. L'utilisation rationnelle peut améliorer l'efficacité du chargement des pages, sinon elle peut être contre-productive.

Pour commencer rapidement avec HTML, il vous suffit de maîtriser quelques balises de base pour créer un squelette Web. 1. La structure de la page est essentielle et, qui est l'élément racine, contient des méta-informations et est la zone d'affichage du contenu. 2. Utilisez le titre. Plus le niveau est élevé, plus le nombre est petit. Utilisez des balises pour segmenter le texte pour éviter de sauter le niveau. 3. Le lien utilise des balises et correspond aux attributs HREF, et l'image utilise des balises et contient des attributs SRC et Alt. 4. La liste est divisée en listes non ordonnées et listes commandées. Chaque entrée est représentée et doit être imbriquée dans la liste. 5. Les débutants n'ont pas à forcer la mémorisation de toutes les balises. Il est plus efficace de les écrire et de les vérifier pendant que vous écrivez. Maître la structure, le texte, les liens, les images et les listes pour créer des pages Web de base.

Shadowdom est une technologie utilisée dans la technologie des composants Web pour créer des sous-arbres DOM isolés. 1. Il permet la monture d'une structure DOM indépendante sur les éléments HTML ordinaires, avec ses propres styles et comportements, et n'affecte pas le document principal; 2. Créé via JavaScript, comme l'utilisation de la méthode attachshadow et la définition du mode à ouvrir; 3. Lorsqu'il est utilisé en combinaison avec HTML, il a trois caractéristiques principales: la structure claire, l'isolement de style et la projection de contenu (fente); 4. Les notes incluent le débogage complexe, le contrôle de la portée du style, les frais généraux de performances et les problèmes de compatibilité du cadre. En bref, Shadowdom fournit des capacités d'encapsulation natives pour construire des composants d'interface utilisateur réutilisables et non polluants.

❌oucannotnesttagssisideanothertagbecauseit’sinvalidhtml; browsersautomatiquematethethefirstbeforeOpiningtheenxt, résultant de laparateParagraphs.

La méthode de placement de style doit être sélectionnée selon la scène. 1. En ligne convient à la modification temporaire des éléments uniques ou du contrôle JS dynamique, tels que la couleur du bouton change avec le fonctionnement; 2. CSS interne convient aux projets avec quelques pages et une structure simple, ce qui est pratique pour la gestion centralisée des styles, tels que les paramètres de style de base des pages de connexion; 3. La priorité est donnée à la réutilisation, à la maintenance et aux performances, et il est préférable de diviser les fichiers CSS de liaison externe pour les grands projets.

ThenameattributeinaninputTagisUsesedToentifyyInput whentheformmissubmited; itSasaTheKeyInTheKey-ValuepairsentTotheServer, WhereTheUser'sinputisthevalue.1.Wenaformmissubmited, thereAmatTrributeBeCheseke

TheHTMLdownloadattributeallowsuserstodownloadfilesdirectlyfromalinkbyusingthetag.Toimplementit,adddownloadtotheanchortag,suchasDownloadPDF,orspecifyacustomfilenamelikeDownloadasmy-document.pdf.1.Itworksbestwithsame-originURLsandcommonfiletypeslikePDF
