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.