Search packages, repositories and app categories

Package detailsv0.3.0

beautiful_soup_dart

Dart native package inspired by Beautiful Soup 4 Python library. Provides easy ways of navigating, searching, and modifying the HTML tree.

AndroidiOSWebmacOSWindowsLinux
30-day downloads
3K
Likes
113
Pub points
160

Install package

flutter pub add beautiful_soup_dart

Package Overview

Package selection guidance compiled from public package information, community data, and project usage.

A Dart-native HTML parsing library inspired by Python's Beautiful Soup 4. It enables effortless navigation, searching, and modification of HTML documents through a simple and intuitive API. Ideal for extracting data from HTML content or manipulating DOM structures in Flutter and other Dart applications. The package supports all major platforms, including web, mobile, and desktop.

Use cases

  • Web scraping HTML content
  • Parsing dynamic HTML responses
  • Extracting structured data from web pages
  • Modifying HTML before rendering
  • Building static site generators

Key features

  • Intuitive CSS and tag selectors
  • Easy navigation through parent/child relationships
  • Support for text and attribute extraction
  • Flexible search methods (find, findAll)
  • Cross-platform compatibility

Suitable for

  • Developers parsing HTML in Flutter apps
  • Data extraction from web sources
  • Tools requiring DOM manipulation
  • Static site generation workflows

Considerations

  • Not optimized for large HTML files
  • Limited to parsing, not rendering HTML
  • Requires careful handling of malformed input
  • No built-in support for JavaScript execution

Original README

Original README snapshot from the linked source repository. Visit the repository for the latest content.

Beautiful Soup Dart

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.

Usage

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.

Table of Contents

The unlinked titles are not yet implemented.

Other methods from the Element from html package can be accessed via bs4element.element.

Features and bugs

Please file feature requests and bugs at the issue tracker or feel free to raise a PR.

Categories

Dependencies

Dependency list 1 items

Source repository

Projects using this package