Table des matières
1. Défis des données Web dynamiques rampant
2. Solution: Exécutez JavaScript avec le package V8
3. Cas pratique: Crawl National Data du site Web du FATF
3.1 Identifier la source de données
3.2 Étapes d'implémentation et exemples de code
3.3 Explication du code
4. Précautions et résumé
Maison interface Web tutoriel HTML Advanced Language Web Crawling: Traitement des données chargées dynamiquement par JavaScript

Advanced Language Web Crawling: Traitement des données chargées dynamiquement par JavaScript

Aug 08, 2025 pm 08:51 PM

Rage de langue R Crawling Web Advanced: Traitement des données chargées dynamiquement par JavaScript

Cet article vise à enseigner comment utiliser le langage R pour traiter les données de page Web qui sont chargées dynamiquement via JavaScript. En réponse au défi que les robots Web traditionnels tels que XML ou RVest ne peuvent pas obtenir directement de telles données, l'article introduira en détail comment simuler un environnement d'exécution JavaScript à l'aide de packages V8 pour extraire les données requises directement à partir de fichiers JavaScript. Grâce à un cas spécifique, nous montrerons comment identifier les sources de données, obtenir du contenu JavaScript, exécuter du code JavaScript dans l'environnement R et nettoyer et organiser les données extraites, afin d'obtenir efficacement et avec précision les informations de page Web générées dynamiquement.

1. Défis des données Web dynamiques rampant

Dans le grattage des données Web (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 via JavaScript. Les packages R traditionnels, tels que XML ou RVest, comptent principalement sur le contenu HTML statique d'analyse. Lorsque les données cibles sont demandées par JavaScript (AJAX) ou sont directement intégrées dans les variables JavaScript, ces outils ne parviennent souvent pas à obtenir directement les informations requises.

Prenant l'exemple de ramper une liste de pays à partir de https://www.fatf-gafi.org/countries/ Le site Web comme une tentative préliminaire d'utiliser XML :: HTMLParse peut ne pas être en mesure d'obtenir les données de pays attendues, car ces données n'existent pas sous la forme d'un tableau HTML standard (

2. Solution: Exécutez JavaScript avec le package V8

Le package V8 du langage R fournit un moteur JavaScript et WebAssembly intégré, nous permettant d'exécuter du code JavaScript dans l'environnement R et d'interagir avec l'environnement d'exécution JavaScript. Cela signifie que nous pouvons charger le fichier JavaScript utilisé dans la page Web, exécuter le code à l'intérieur, puis extraire les valeurs de variable définies dans JavaScript.

Idée de base:

  1. Identifiez les sources de données JavaScript: cochez les ressources demandées lors du chargement de la page Web, en particulier les fichiers .js, via l'outil de développement du navigateur (onglet réseau / réseau) et recherchez des fichiers JavaScript qui peuvent contenir les données cibles.
  2. Obtenez du contenu JavaScript: utilisez le package HTTR pour télécharger le contenu du fichier JavaScript.
  3. Initialisez le moteur V8: créez un contexte V8.
  4. Exécuter le code JavaScript: exécutez le contenu JavaScript téléchargé dans le contexte V8.
  5. Extraire Variables: Obtenez la valeur d'une variable JavaScript à partir du contexte V8.
  6. Nettoyage des données: effectuez la conversion du format nécessaire et le nettoyage des données extraites.

3. Cas pratique: Crawl National Data du site Web du FATF

Nous utiliserons le site Web du FATF (Financial Action Task Force) à titre d'exemple pour démontrer comment ramper sa liste de pays.

3.1 Identifier la source de données

En visitant https://www.fatf-gafi.org/countries/ et en ouvrant l'outil de développeur du navigateur, dans l'onglet "réseau" ou "réseau", nous pouvons observer qu'un fichier javascript nommé country-data-multi-nang.js sera demandé pendant le processus de chargement de page. Il a été prouvé que ce fichier contient toutes les données du pays dont nous avons besoin et existe dans une variable de tableau JavaScript appelé pays.

L'URL complète du fichier javascript est généralement: https://www.fatf-gafi.org/media/fatf/fatfv20/js/country-data-multi-lang.js.

3.2 Étapes d'implémentation et exemples de code

Tout d'abord, assurez-vous d'avoir installé les packages R requis: HTTR, V8, DPLYR et TIDTY.

 # Chargez la bibliothèque de bibliothèque requise (HTTR) # Utilisé pour envoyer HTTP Request 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, en particulier les fonctions les plus insensibles # 1. Définissez l'URL du fichier de données JavaScript
js_url %
  UNNER (cols = c (groupes))%>% # Développez la colonne «Groupes» imbriquée Sélectionner (C (1: 2, 4:14, 16))%>% # Sélectionner des colonnes spécifiques qui contiennent le nom du pays, le code et le filtre d'informations d'organisation connexe (! Is.na (Nom)) # Filter Out Rows with Country Name Empty # View the Final Data Structure et les premières lignes Impriment (final_Coutr les lignes_data)
# str (final_country_data) # Voir la structure des données

3.3 Explication du code

  • http :: get () et content () : utilisé pour lancer des demandes de GET HTTP et obtenir le contenu de la réponse. Le paramètre «texte» garantit que le contenu est analysé en une chaîne.
  • v8 () : crée une instance de moteur V8, qui fournit un environnement de fonctionnement JavaScript autonome.
  • CT $ EVAL (JS_CONTENT) : Il s'agit de l'étape de base. Il exécutera le code JavaScript téléchargé à partir du site Web du moteur V8. Après l'exécution, toutes les variables mondiales définies dans ce code JavaScript (comme les pays dans ce cas) sont accessibles dans R.
  • CT $ GET ("Pays") : Extraire la valeur d'une variable JavaScript nommée pays du moteur V8. Le package V8 les convertira automatiquement en structure de données correspondante dans R (généralement une liste ou une trame de données).
  • UNNOST (COLS = C (groupes)) : Il est observé que dans le cadre de données renvoyé par CT $ GET ("PAYS"), il existe une colonne nommée des groupes, à l'intérieur de laquelle est une liste ou un cadre de données imbriqué. La fonction inne plus () (du package Tidyr) est utilisée pour étendre ces structures imbriquées dans des colonnes plates, ce qui rend les données plus faciles à analyser.
  • SELECT (C (1: 2, 4:14, 16)) : Après l'opération la plus intensive, le cadre de données peut contenir des colonnes ou des colonnes redondantes qui doivent être réorganisées. Ici, nous sélectionnons la colonne dont vous avez besoin par index de colonne. Dans les applications pratiques, il est recommandé d'imprimer des noms (final_country_data) ou d'utiliser GlimpSe () pour afficher tous les noms de colonne, puis sélectionner par nom pour améliorer la lisibilité et la robustesse du code.
  • Filtre (! Is.na (nom)) : filtrez les lignes dont la colonne de nom est na (valeur manquée). Dans certaines sources de données, il peut y avoir des lignes vides remplies à la fin, qui peuvent être effacées de cette manière.

4. Précautions et résumé

  • Positionnement de la source JavaScript: trouver le fichier JavaScript correct est la clé. Compartif dans l'utilisation des outils de développeur de navigateur (en particulier le réseau / réseau et les onglets Sources / Sources) est une compétence incontournable.
  • Exploration de la structure des données: les données obtenues à partir du V8 peuvent être une liste imbriquée complexe. Utilisez STR (), NAMES (), GLIMPSE () et d'autres fonctions pour explorer sa structure afin que le nettoyage des données soit correctement utilisé par des fonctions telles que Unnest (), Select () et d'autres fonctions.
  • Complexité dynamique du contenu: tous les contenus dynamiques ne peuvent pas être extraits directement via V8. Si les données sont chargées par des opérations DOM complexes, l'interaction utilisateur ou le chiffrement, des outils plus avancés tels que le sélénium et les navigateurs sans tête peuvent être nécessaires pour la simulation. Mais pour le cas où les données existent directement dans une variable JavaScript, V8 est un choix léger et efficace.
  • Politique du site Web: Avant de mener des activités de rampe Web, assurez-vous de consulter le fichier Robots.txt du site Web et les conditions d'utilisation pour vous assurer que votre comportement est conforme aux réglementations du site Web.

Grâce à l'étude de cet article, vous devriez être en mesure de maîtriser les méthodes de base de l'utilisation du package V8 du langage R pour gérer les données de chargement dynamique JavaScript. Cette technologie élargit considérablement la capacité de R à ramper les données des page Web, ce qui lui permet de faire face à des structures Web modernes plus complexes.

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
1545
276
Tags HTML essentiels pour les débutants Tags HTML essentiels pour les débutants Jul 27, 2025 am 03:45 AM

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.

Quelle est l'attribut de nom dans une balise d'entrée? Quelle est l'attribut de nom dans une balise d'entrée? Jul 27, 2025 am 04:14 AM

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

Concepts Shadow Dom et intégration HTML Concepts Shadow Dom et intégration HTML Jul 24, 2025 am 01:39 AM

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.

Pouvez-vous mettre une balise  dans une autre balise ? Pouvez-vous mettre une balise dans une autre balise ? Jul 27, 2025 am 04:15 AM

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

Comment intégrer un document PDF dans HTML? Comment intégrer un document PDF dans HTML? Aug 01, 2025 am 06:52 AM

L'utilisation de balises est la méthode la plus simple et recommandée. La syntaxe convient aux navigateurs modernes pour intégrer directement le PDF; 2. L'utilisation de balises peut fournir une meilleure prise en charge du contenu de contrôle et de sauvegarde, la syntaxe est, et fournit des liens de téléchargement dans les balises sous forme de solutions de sauvegarde lorsqu'elles ne sont pas prises en charge; 3. Il peut être intégré via Google Docsviewer, mais il n'est pas recommandé d'utiliser largement en raison de problèmes de confidentialité et de performances; 4. Afin d'améliorer l'expérience utilisateur, les hauteurs appropriées doivent être définies, des tailles réactives (telles que la hauteur: 80VH) et les liens de téléchargement PDF doivent être fournis afin que les utilisateurs puissent les télécharger et les visualiser eux-mêmes.

Tag de style HTML: en ligne vs CSS interne Tag de style HTML: en ligne vs CSS interne Jul 26, 2025 am 07:23 AM

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.

Comment créer une liste non ordonnée dans HTML? Comment créer une liste non ordonnée dans HTML? Jul 30, 2025 am 04:50 AM

Pour créer une liste HTML non ordonnée, vous devez utiliser une balise pour définir un conteneur de liste. Chaque élément de liste est enveloppé d'une balise et le navigateur ajoutera automatiquement des balles; 1. Créez une liste avec une balise; 2. Chaque élément de liste est défini avec une balise; 3. Le navigateur génère automatiquement des symboles de points par défaut; 4. Les sublilistes peuvent être mis en œuvre par le biais de la nidification; 5. Utilisez l'attribut de type de style liste de CSS pour modifier le style de symbole, tel que le disque, le cercle, le carré ou aucun; Utilisez ces balises correctement pour générer une liste standard non ordonnée.

Comment utiliser l'attribut satisfait? Comment utiliser l'attribut satisfait? Jul 28, 2025 am 02:24 AM

THECONTANTITABLEATTRIBUTEMAKESANYHTMLEMÉMÉRITÉBYADDING CONTANTITALLE = "VRUE", permettant à la réception de codomente detteurthebrowser.

See all articles