Dart 解析 HTML
最后修改日期:2024 年 1 月 28 日
在本文中,我们将介绍如何在 Dart 中解析 HTML 文档。我们使用 html 包。
$ dart pub add html
我们需要将 html 库添加到项目中。
Dart 解析本地 HTML 文件
在第一个示例中,我们解析本地磁盘上的 HTML 文件。
index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>My title</title>
</head>
<body>
<h1>My Document</h1>
<p>
A simple document.
</p>
</body>
</html>
这是要解析的文件。
main.dart
import 'dart:io';
import 'package:html/parser.dart';
void main() {
var file = new File('index.html');
var data = file.readAsStringSync();
var doc = parse(data);
print(doc.head!.innerHtml);
}
我们加载文件并进行解析。我们打印 head 标签的内部 HTML 内容。
import 'dart:io'; import 'package:html/parser.dart';
我们导入 IO 库和 HTML 解析器。
var file = new File('index.html');
var data = file.readAsStringSync();
我们读取文件内容。
var doc = parse(data);
我们将数据解析成一个文档;此文档可以使用各种成员函数和属性进行处理。
print(doc.head!.innerHtml);
我们获取并打印 head 标签的内容。
$ dart main.dart <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>My title</title>
Dart 从网页解析 HTML
在第二个示例中,我们从外部网页解析 HTML 文档。
main.dart
import 'package:http/http.dart' as http;
import 'package:html/parser.dart';
Future<String> fetchData() async {
final resp = await http.get(Uri.http('webcode.me'));
if (resp.statusCode == 200) {
return resp.body;
} else {
throw Exception('Failed to fetch data');
}
}
void main() async {
var data = await fetchData();
var doc = parse(data);
print(doc.querySelector('title')!.text);
}
我们向 webcode.me 网页发送 GET 请求并检索主页。我们对其进行解析并获取其标题。
print(doc.querySelector('title')!.text);
我们使用 querySelector 获取 title 标签的文本内容。
$ dart main.dart My html page
Dart html querySelectorAll
querySelectorAll 成员函数查找此文档中与指定选择器组匹配的所有后代元素。
main.dart
import 'package:http/http.dart' as http;
import 'package:html/parser.dart';
Future<String> fetchData() async {
final resp = await http.get(Uri.parse('http://webcode.me/os.html'));
if (resp.statusCode == 200) {
return resp.body;
} else {
throw Exception('Failed to fetch data');
}
}
void main() async {
var data = await fetchData();
var doc = parse(data);
var lis = doc.querySelectorAll('li');
lis.forEach((e) => {print(e.text)});
}
该程序查找外部 HTML 文档中的所有 li 标签并打印它们的文本内容。
var lis = doc.querySelectorAll('li');
使用 querySelectorAll,我们获取所有 li 标签。
lis.forEach((e) => {print(e.text)});
我们遍历列表并打印每个元素的标题。
$ dart main.dart Solaris FreeBSD Debian NetBSD Windows
来源
在本文中,我们涵盖了 Dart 中的 HTML 解析。
作者
列出 所有 Dart 教程。