Dart:
HTML Parsen
Hoe te:
Dart biedt geen ingebouwde ondersteuning voor HTML-parsing in zijn kernbibliotheken. Je kunt echter een externe package zoals html
gebruiken om HTML-documenten te parsen en te manipuleren.
Voeg eerst de html
package toe aan je pubspec.yaml
-bestand:
dependencies:
html: ^0.15.0
Importeer vervolgens de package in je Dart-bestand:
import 'package:html/parser.dart' show parse;
import 'package:html/dom.dart';
Hier is een basisvoorbeeld van het parseren van een string met HTML en het extraheren van gegevens:
void main() {
var htmlDocument = """
<html>
<body>
<h1>Hallo, Dart!</h1>
<p>Dit is een paragraaf in een voorbeeld HTML</p>
</body>
</html>
""";
// Parse de HTML-string
Document document = parse(htmlDocument);
// Gegevens extraheren
String titel = document.querySelector('h1')?.text ?? "Geen titel gevonden";
String paragraaf = document.querySelector('p')?.text ?? "Geen paragraaf gevonden";
print('Titel: $titel');
print('Paragraaf: $paragraaf');
}
Output:
Titel: Hallo, Dart!
Paragraaf: Dit is een paragraaf in een voorbeeld HTML
Om te interageren met webpagina’s in de echte wereld, kun je html
-parsing combineren met HTTP-verzoeken (gebruikmakend van de http
-package om webinhoud op te halen). Hier is een snel voorbeeld:
Voeg eerst de http
-package samen met html
toe:
dependencies:
html: ^0.15.0
http: ^0.13.3
Vervolgens, fetch en parseer een HTML-pagina van het web:
import 'package:http/http.dart' as http;
import 'package:html/parser.dart' show parse;
void main() async {
var url = 'https://example.com';
// Haal de webpagina op
var response = await http.get(Uri.parse(url));
if (response.statusCode == 200) {
var document = parse(response.body);
// Stel je voor dat de pagina <h1>-tags heeft waarin je geïnteresseerd bent
var koppen = document.querySelectorAll('h1').map((e) => e.text).toList();
print('Koppen: $koppen');
} else {
print('Verzoek mislukt met status: ${response.statusCode}.');
}
}
Let op: De hierboven getoonde web scraping-techniek moet verantwoordelijk worden gebruikt en in overeenstemming met de servicevoorwaarden van de website.