Dart:
การวิเคราะห์ HTML
วิธีการ:
Dart ไม่มีการสนับสนุนในการแยกส่วน HTML ในไลบรารีหลักของมัน อย่างไรก็ตาม, คุณสามารถใช้แพ็คเกจของบุคคลที่สาม เช่น html
เพื่อแยกส่วนและจัดการเอกสาร HTML
ก่อนอื่น, เพิ่มแพ็คเกจ html
ไปยังไฟล์ pubspec.yaml
ของคุณ:
dependencies:
html: ^0.15.0
จากนั้น, นำเข้าแพ็คเกจลงในไฟล์ Dart ของคุณ:
import 'package:html/parser.dart' show parse;
import 'package:html/dom.dart';
นี่เป็นตัวอย่างพื้นฐานของการแยกส่วนสตริงที่มี HTML และการสกัดข้อมูล:
void main() {
var htmlDocument = """
<html>
<body>
<h1>Hello, Dart!</h1>
<p>This is a paragraph in a sample HTML</p>
</body>
</html>
""";
// แยกส่วนสตริง HTML
Document document = parse(htmlDocument);
// การสกัดข้อมูล
String title = document.querySelector('h1')?.text ?? "ไม่พบหัวข้อ";
String paragraph = document.querySelector('p')?.text ?? "ไม่พบย่อหน้า";
print('หัวข้อ: $title');
print('ย่อหน้า: $paragraph');
}
ผลลัพธ์:
หัวข้อ: Hello, Dart!
ย่อหน้า: This is a paragraph in a sample HTML
เพื่อโต้ตอบกับหน้าเว็บในโลกจริง, คุณอาจจะรวมการแยกส่วน html
กับการร้องขอ HTTP (โดยใช้แพ็คเกจ http
เพื่อดึงเนื้อหาเว็บ) นี่คือตัวอย่างอย่างรวดเร็ว:
ก่อนอื่น, เพิ่มแพ็คเกจ http
พร้อมกับ html
:
dependencies:
html: ^0.15.0
http: ^0.13.3
จากนั้น, ดึงและแยกส่วนหน้า HTML จากเว็บ:
import 'package:http/http.dart' as http;
import 'package:html/parser.dart' show parse;
void main() async {
var url = 'https://example.com';
// ดึงเว็บเพจ
var response = await http.get(Uri.parse(url));
if (response.statusCode == 200) {
var document = parse(response.body);
// สมมติว่าหน้านี้มีแท็ก <h1> ที่คุณสนใจ
var headlines = document.querySelectorAll('h1').map((e) => e.text).toList();
print('ข่าวหัวข้อ: $headlines');
} else {
print('คำขอล้มเหลวด้วยสถานะ: ${response.statusCode}.');
}
}
หมายเหตุ: เทคนิคการดึงข้อมูลจากเว็บที่แสดงด้านบนควรถูกใช้อย่างรับผิดชอบและตามข้อกำหนดการให้บริการของเว็บไซต์