首页 > 解决方案 > 用 Dart 解析 Html 页面

问题描述

我正在尝试解析 HTTP 获取请求中的以下条目。在正文中,您会看到一个带有函数调用的脚本标记,我需要在其中访问 HTML 标记内的 JSON。

<!DOCTYPE html>
<html translate="no">

<head></head>

<body>
  <script>
    $(function() {
          intranet.list.frontend.init({
              gridDataAndConfiguration: {
                "Here is a big Json - WANTED"
              },
            },
          });
  </script>
</body>
</html>

到目前为止,我没有使用任何 Dart 特定的解析方法来解析 HTML,例如 "parse" from package:html/parser.dart. 该尝试成功地搜索了 HTML DOM 中的所有“脚本”标签,但不幸的是,我没有在引用的脚本标签中找到或显示 JSON 或函数调用!

问题是,如何使用 Dart 访问给定 HTML 页面中的 JSON?

解决方案 :

RegExp re = RegExp(r'\[\{.*?\}\]');
var parsedHtml = parse(htmlText);
var allScripts = parsedHtml.getElementsByTagName('script');
for (int i = 0; i < allScripts.length; i++) {
  if (allScripts[i].innerHtml.contains(startString)) {
    Iterable<String> result =
        re.allMatches(allScripts[i].innerHtml).map((m) => m[0]);
    List<dynamic> jsonParsed = [];
    for (var match in result) jsonParsed.add(jsonDecode(match));

感谢您的回答和帮助。

标签: htmlflutterdart

解决方案


推荐阅读