v0.3.0
beautiful_soup_dart
Python의 Beautiful Soup 4 라이브러리에서 영감을 받은 Dart 네이티브 패키지입니다. HTML 트리를 탐색하고 검색하며 수정하는 쉬운 방법을 제공합니다.
112좋아요 2.6천30일 다운로드150Pub 점수
AndroidiOSWebmacOSWindowsLinux
Python의 Beautiful Soup 4 라이브러리에서 영감을 받은 Dart 네이티브 패키지입니다. HTML 트리를 탐색하고 검색하며 수정하는 쉬운 방법을 제공합니다.
아래는 영문 원문 스냅샷입니다. 최신 내용은 GitHub에서 확인하세요.
pub package tests codecov
Dart native package inspired by Beautiful Soup 4 Python library. Provides easy ways of navigating, searching, and modifying the HTML tree.
A simple usage example:
import 'package:beautiful_soup_dart/beautiful_soup.dart';
/// 1. parse a document String
BeautifulSoup bs = BeautifulSoup(html_doc_string);
// use BeautifulSoup.fragment(html_doc_string) if you parse a part of html
/// 2. navigate quickly to any element
bs.body!.a!; // navigate quickly with tags, use outerHtml or toString to get outer html
bs.find('p', class_: 'story'); // finds first element with html tag "p" and which has "class" attribute with value "story"
bs.findAll('a', attrs: {'class': true}); // finds all elements with html tag "a" and which have defined "class" attribute with whatever value
bs.find('', selector: '#link1'); // find with custom CSS selector (other parameters are ignored)
bs.find('*', id: 'link1'); // any element with id "link1"
bs.find('*', regex: r'^b'); // find any element which tag starts with "b", for example: body, b, ...
bs.find('p', string: r'^Article #\d*'); // find "p" element which text starts with "Article #[number]"
bs.find('a', attrs: {'href': 'http://example.com/elsie'}); // finds by "href" attribute
/// 3. perform any other actions for the navigated element
Bs4Element bs4 = bs.body!.p!; // navigate quickly with tags
bs4.name; // get tag name
bs4.string; // get text
bs4.toString(); // get String representation of this element, same as outerHtml
bs4.innerHtml; // get html elements inside the element
bs4.className; // get class attribute value
bs4['class']; // get class attribute value
bs4['class'] = 'board'; // change class attribute value to 'board'
bs4.children; // get all element's children elements
bs4.replaceWith(otherBs4Element); // replace with other element
... and many more
Check test folder for more examples.
The unlinked titles are not yet implemented.
node.dataOther methods from the Element from html package can be accessed via bs4element.element.
Please file feature requests and bugs at the issue tracker or feel free to raise a PR.