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.