用于 android / iOS 开发的 FLUTTER 中的 HTML 解析
Posted
技术标签:
【中文标题】用于 android / iOS 开发的 FLUTTER 中的 HTML 解析【英文标题】:HTML parsing in FLUTTER for android / iOS development 【发布时间】:2019-01-18 18:56:48 【问题描述】:我们知道有一个 Jsoup 库供 android 开发人员解析 html 文本、代码等。由于我是 Flutter 移动应用程序开发的新手,我想知道是否有像 Jsoup 这样的库来解析 html 文本、来自网络的代码网站在颤抖。
【问题讨论】:
这取决于你的目的。如果您只想显示网页,请使用此插件 pub.dartlang.org/packages/flutter_webview_plugin 。这个插件不能做的用例是什么? 不,实际上我只想显示一些文本或内容,例如报纸网站的新闻标题,而不是整个网页。 仍然,使用那个插件,使用 md。 【参考方案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 函数向我抛出了一个错误,我认为该错误与请求标头有关,但不知道如何解决。有什么想法吗?以上是关于用于 android / iOS 开发的 FLUTTER 中的 HTML 解析的主要内容,如果未能解决你的问题,请参考以下文章