Dart:
Analisi del HTML
Come fare:
Dart non fornisce supporto integrato per l’analisi di HTML nelle sue librerie core. Tuttavia, puoi utilizzare un pacchetto di terze parti come html
per analizzare e manipolare documenti HTML.
Prima, aggiungi il pacchetto html
al tuo file pubspec.yaml
:
dependencies:
html: ^0.15.0
Quindi, importa il pacchetto nel tuo file Dart:
import 'package:html/parser.dart' show parse;
import 'package:html/dom.dart';
Ecco un esempio base di analisi di una stringa contenente HTML ed estrazione di dati:
void main() {
var htmlDocument = """
<html>
<body>
<h1>Ciao, Dart!</h1>
<p>Questo è un paragrafo in un esempio di HTML</p>
</body>
</html>
""";
// Analizza la stringa HTML
Document document = parse(htmlDocument);
// Estrazione di dati
String title = document.querySelector('h1')?.text ?? "Nessun titolo trovato";
String paragraph = document.querySelector('p')?.text ?? "Nessun paragrafo trovato";
print('Titolo: $title');
print('Paragrafo: $paragraph');
}
Output:
Titolo: Ciao, Dart!
Paragrafo: Questo è un paragrafo in un esempio di HTML
Per interagire con pagine web del mondo reale, potresti combinare l’analisi di html
con richieste HTTP (usando il pacchetto http
per recuperare contenuti web). Ecco un esempio veloce:
Prima, aggiungi il pacchetto http
insieme a html
:
dependencies:
html: ^0.15.0
http: ^0.13.3
Quindi, recupera e analizza una pagina HTML dal web:
import 'package:http/http.dart' as http;
import 'package:html/parser.dart' show parse;
void main() async {
var url = 'https://example.com';
// Recupera la pagina web
var response = await http.get(Uri.parse(url));
if (response.statusCode == 200) {
var document = parse(response.body);
// Supponiamo che la pagina abbia tag <h1> che ti interessano
var titoli = document.querySelectorAll('h1').map((e) => e.text).toList();
print('Titoli: $titoli');
} else {
print('Richiesta fallita con stato: ${response.statusCode}.');
}
}
Nota: La tecnica di web scraping mostrata sopra dovrebbe essere utilizzata responsabilmente e nel rispetto dei termini di servizio del sito web.