Как при помощи языка Dart парсить ссылки из html при помощи пакета html?

Кто знает, как на языке dart спарсить линки с хабра (ссылки постов с хабов)? Вот, что я пробовал, но никак не могу понять, как получить содержимое тега a, то есть сами ссылки:

import 'package:http/http.dart' as http;
import 'package:html/parser.dart';
import 'package:html/dom.dart';

void main() async {
  String url = "https://habr.com/ru/hub/programming/";

  var Titles = [];
  var Links = [];

  //final response = await http.Client().get(Uri.parse(test));
  var response = await http.get(url);
  if (response.statusCode == 200) {
    var document = parse(response.body);
    var _class = document.getElementsByTagName("a");
    _class.forEach((element) {
      print(element.text);
    });
    // var titles = document.getElementsByClassName("post__title_link");
    // titles.forEach((element) {
    //   Titles.add(element.text);
    // });
    var links = document.getElementsByClassName('a');
    print(links);
    links.forEach((element) {
      Links.add(element.text);
    });

    //print(Titles);
    //print(Links);
  } else {
    print('Request failed with status: ${response.statusCode}.');
  }
}

Ответы (1 шт):

Автор решения: MiT

Вот так можно сделать с использованием Regex.

Ссылка + название:

void main() {
  String s = '''DFGHJ
<a href="http://www.evernote.com/">Visit our HTML tutorial</a>
<a href="https://com.mywebsite.com/yfgvh/f23/fsd" rel="DFGHJ"></a>
DFGHJ''';

  var links = <Link>[];

  var regExp = new RegExp(
    r'<a[^>]+href=\"(.*?)\"[^>]*>(.*)?<\/a>',
  );

  List<RegExpMatch> listMatches = regExp.allMatches(s).toList();

  for (int i = 0; i < listMatches.length; i++) {
    links.add(Link(
        listMatches[i].group(1) ?? "null", listMatches[i].group(2) ?? "null"));
  }

  links.forEach((v) => print(v.title + ": " + v.url));
}

class Link {
  final String url;
  final String title;

  const Link(this.url, this.title);
}

Просто ссылка:

void main() {
  String s = '''DFGHJ
<a href="http://www.evernote.com/">Visit our HTML tutorial</a>
<a href="https://com.mywebsite.com/yfgvh/f23/fsd" rel="DFGHJ"></a>
DFGHJ''';

  var links = <String>[];

  var regExp = new RegExp(
    r'<a[^>]+href=\"(.*?)\"[^>]*',
  );

  List<RegExpMatch> listMatches = regExp.allMatches(s).toList();

  for (int i = 0; i < listMatches.length; i++) {
    links.add(listMatches[i].group(1) ?? "null");
  }

  links.forEach(print);
}
→ Ссылка