Dart:
HTML Parsen
Wie geht das:
Dart bietet in seinen Kernbibliotheken keine integrierte Unterstützung für das Parsen von HTML. Sie können jedoch ein Drittanbieter-Paket wie html
verwenden, um HTML-Dokumente zu parsen und zu manipulieren.
Fügen Sie zunächst das html
-Paket Ihrer pubspec.yaml
-Datei hinzu:
dependencies:
html: ^0.15.0
Importieren Sie dann das Paket in Ihre Dart-Datei:
import 'package:html/parser.dart' show parse;
import 'package:html/dom.dart';
Hier ist ein einfaches Beispiel für das Parsen eines Strings, der HTML enthält, und das Extrahieren von Daten:
void main() {
var htmlDocument = """
<html>
<body>
<h1>Hallo, Dart!</h1>
<p>Dies ist ein Absatz in einem Beispiel-HTML</p>
</body>
</html>
""";
// Den HTML-String parsen
Document document = parse(htmlDocument);
// Daten extrahieren
String titel = document.querySelector('h1')?.text ?? "Kein Titel gefunden";
String absatz = document.querySelector('p')?.text ?? "Kein Absatz gefunden";
print('Titel: $titel');
print('Absatz: $absatz');
}
Ausgabe:
Titel: Hallo, Dart!
Absatz: Dies ist ein Absatz in einem Beispiel-HTML
Um mit realen Webseiten zu interagieren, könnten Sie das Parsen von html
mit HTTP-Anfragen kombinieren (indem Sie das http
-Paket verwenden, um Webinhalte abzurufen). Hier ist ein schnelles Beispiel:
Fügen Sie zunächst das http
-Paket zusammen mit html
hinzu:
dependencies:
html: ^0.15.0
http: ^0.13.3
Holen und parsen Sie dann eine HTML-Seite aus dem Web:
import 'package:http/http.dart' as http;
import 'package:html/parser.dart' show parse;
void main() async {
var url = 'https://example.com';
// Die Webseite abrufen
var response = await http.get(Uri.parse(url));
if (response.statusCode == 200) {
var document = parse(response.body);
// Angenommen, die Seite enthält <h1>-Tags, die Sie interessieren
var schlagzeilen = document.querySelectorAll('h1').map((e) => e.text).toList();
print('Schlagzeilen: $schlagzeilen');
} else {
print('Anfrage fehlgeschlagen mit Status: ${response.statusCode}.');
}
}
Hinweis: Die oben gezeigte Technik des Web Scrapings sollte verantwortungsbewusst und in Übereinstimmung mit den Nutzungsbedingungen der Website verwendet werden.