【问题标题】:HTML parsing in FLUTTER for android / iOS development用于 android / iOS 开发的 FLUTTER 中的 HTML 解析
【发布时间】:2019-01-18 18:56:48
【问题描述】:

我们知道有一个 Jsoup 库供 android 开发人员解析 html 文本、代码等。由于我是 Flutter 移动应用程序开发的新手,我想知道是否有像 Jsoup 这样的库来解析 html 文本、来自网络的代码网站在颤抖。

【问题讨论】:

  • 这取决于你的目的。如果您只想显示网页,请使用此插件 pub.dartlang.org/packages/flutter_webview_plugin 。这个插件不能做的用例是什么?
  • 不,实际上我只想显示一些文本或内容,例如报纸网站的新闻标题,而不是整个网页。
  • 仍然,使用那个插件,使用 md。

标签: android html-parsing flutter html-parser


【解决方案1】:

你可以这样解析 HTML 字符串

import ‘package:html/parser.dart’;
//here goes the function 

String _parseHtmlString(String htmlString) {

var document = parse(htmlString);

String parsedString = parse(document.body.text).documentElement.text;

return parsedString;
}

请让我知道这不能解决您的问题。

【讨论】:

  • 需要添加的包是-> html: ^0.14.0+4
【解决方案2】:

我为我解决问题。首先,对于用户解析器,您应该使用http.get(url) 获取数据。之后你就可以解析你想要的了。

获取html页面:

Future<String> fetchHTML(String url) async {
  final response = await http.get(url);

  if (response.statusCode == 200)
    return response.body;
  else throw Exception('Failed');
}

之后您必须致电FutureBuilder()

    FutureBuilder<String>(
      future: fetchHTML('http://your_page.ru/page.html'),
      builder: (context, snapshot){
        if (snapshot.hasData) {
          //Your downloaded page
          _temp = snapshot.data;
          print(snapshot.data);
          return Text('Finished');
        }
        else if (snapshot.hasError)
          return Text('ERROR');

        return Text('LOADING');
      },
    ),

现在你可以解析它了:

parse(_temp);

【讨论】:

  • 嘿,我遇到了您的确切情况,但是 get 函数向我抛出了一个错误,我认为该错误与请求标头有关,但不知道如何解决。有什么想法吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-12-04
  • 2011-06-17
  • 2011-06-03
  • 2019-01-27
  • 1970-01-01
相关资源
最近更新 更多