Dart:
HTML:n jäsentäminen
Kuinka:
Dart ei tarjoa sisäänrakennettua tukea HTML:n jäsentämiseen sen peruskirjastoissa. Voit kuitenkin käyttää kolmannen osapuolen pakettia, kuten html
, HTML-dokumenttien jäsentämiseen ja manipulointiin.
Lisää ensin html
-paketti pubspec.yaml
-tiedostoosi:
dependencies:
html: ^0.15.0
Tuo sitten paketti Dart-tiedostoosi:
import 'package:html/parser.dart' show parse;
import 'package:html/dom.dart';
Tässä on perusesimerkki merkkijonon jäsentämisestä, joka sisältää HTML:ää ja tietojen uuttamisesta:
void main() {
var htmlDocument = """
<html>
<body>
<h1>Hei, Dart!</h1>
<p>Tämä on kappale esimerkki-HTML:ssä</p>
</body>
</html>
""";
// Jäsennä HTML-merkkijono
Document document = parse(htmlDocument);
// Tietojen poiminta
String title = document.querySelector('h1')?.text ?? "Otsikkoa ei löytynyt";
String paragraph = document.querySelector('p')?.text ?? "Kappaletta ei löytynyt";
print('Otsikko: $title');
print('Kappale: $paragraph');
}
Tuloste:
Otsikko: Hei, Dart!
Kappale: Tämä on kappale esimerkki-HTML:ssä
Oikeiden verkkosivujen kanssa vuorovaikuttamiseksi saatat yhdistää html
-jäsentämisen HTTP-pyyntöihin (käyttäen http
-pakettia web-sisällön noutamiseen). Tässä on nopea esimerkki:
Lisää ensin http
-paketti yhdessä html
-paketin kanssa:
dependencies:
html: ^0.15.0
http: ^0.13.3
Hae ja jäsentä sitten HTML-sivu verkosta:
import 'package:http/http.dart' as http;
import 'package:html/parser.dart' show parse;
void main() async {
var url = 'https://example.com';
// Nouda verkkosivu
var response = await http.get(Uri.parse(url));
if (response.statusCode == 200) {
var document = parse(response.body);
// Oletetaan, että sivulla on <h1>-tageja, jotka kiinnostavat sinua
var headlines = document.querySelectorAll('h1').map((e) => e.text).toList();
print('Otsikot: $headlines');
} else {
print('Pyyntö epäonnistui tilakoodilla: ${response.statusCode}.');
}
}
Huom: Yllä näytettyä verkon kaavintatekniikkaa tulisi käyttää vastuullisesti ja noudattaen verkkosivuston käyttöehtoja.