Analyse Syntaxique de HTML

Dart:
Analyse Syntaxique de HTML

Comment faire :

Dart ne fournit pas de support intégré pour l’analyse HTML dans ses bibliothèques de base. Cependant, vous pouvez utiliser un package tiers comme html pour analyser et manipuler des documents HTML.

Tout d’abord, ajoutez le package html à votre fichier pubspec.yaml :

dependencies:
  html: ^0.15.0

Puis, importez le package dans votre fichier Dart :

import 'package:html/parser.dart' show parse;
import 'package:html/dom.dart';

Voici un exemple basique d’analyse d’une chaîne contenant du HTML et d’extraction de données :

void main() {
  var htmlDocument = """
  <html>
    <body>
      <h1>Bonjour, Dart !</h1>
      <p>Ceci est un paragraphe dans un exemple de HTML</p>
    </body>
  </html>
  """;

  // Analyser la chaîne HTML
  Document document = parse(htmlDocument);

  // Extraction de données
  String titre = document.querySelector('h1')?.text ?? "Pas de titre trouvé";
  String paragraphe = document.querySelector('p')?.text ?? "Pas de paragraphe trouvé";

  print('Titre: $titre');
  print('Paragraphe: $paragraphe');
}

Sortie :

Titre: Bonjour, Dart !
Paragraphe: Ceci est un paragraphe dans un exemple de HTML

Pour interagir avec des pages web réelles, vous pourriez combiner l’analyse html avec des requêtes HTTP (en utilisant le package http pour récupérer le contenu web). Voici un rapide exemple :

Tout d’abord, ajoutez le package http en plus de html :

dependencies:
  html: ^0.15.0
  http: ^0.13.3

Ensuite, récupérez et analysez une page HTML du web :

import 'package:http/http.dart' as http;
import 'package:html/parser.dart' show parse;

void main() async {
  var url = 'https://example.com';
  
  // Récupérer la page web
  var réponse = await http.get(Uri.parse(url));
  
  if (réponse.statusCode == 200) {
    var document = parse(réponse.body);

    // Supposons que la page contient des balises <h1> qui vous intéressent
    var titres = document.querySelectorAll('h1').map((e) => e.text).toList();
    
    print('Titres: $titres');
  } else {
    print('La demande a échoué avec le statut : ${réponse.statusCode}.');
  }
}

Note : La technique de grattage web montrée ci-dessus doit être utilisée de manière responsable et conforme aux conditions de service du site web.