dart – Flutter:获取HTML页面的某些元素

dart – Flutter:获取HTML页面的某些元素,第1张

概述我最近开始使用dart& amp;开发一个动物收容所应用程序.扑了一下,碰到了问题. 这个想法是有一个捐赠页面,用户可以选择为狗狗购买食物.开放式脚手架将显示食物的图片,并从销售所述食物的网站和当前价格中获取一些数据.图像作为资产存储在本地,但我想从网站上获取至少价格,因此它始终是最新的. 我按照flutter.io上的教程,但问题是http.get返回网站的整个代码,而不仅仅是我指定的部分(de 我最近开始使用dart& amp;开发一个动物收容所应用程序.扑了一下,碰到了问题.

这个想法是有一个捐赠页面,用户可以选择为狗狗购买食物.开放式脚手架将显示食物的图片,并从销售所述食物的网站和当前价格中获取一些数据.图像作为资产存储在本地,但我想从网站上获取至少价格,因此它始终是最新的.

我按照Flutter.io上的教程,但问题是http.get返回网站的整个代码,而不仅仅是我指定的部分(description_tab).我试过检查异步和放大器dart:转换文档,但到目前为止,我还没有找到任何可以帮助从HTML网站抓取特定内容的东西,使用div标签.

完整代码可在此处找到:https://github.com/kergefarkas/osszefogasaszanhuzokert

这就是我能够获取网站的整个HTML代码的方式:

Future<JoseraAdultActive> fetchPost() async {  final response = await http.get(      'https://www.petissimo.hu/kutyaknak/szarazeledelek/josera/josera-active.HTML');  final Json = JsON.decode(response.body);  return new JoseraAdultActive.fromJson(Json);}class JoseraAdultActive {  final String description;  final String price;  JoseraAdultActive({this.description,this.price});  factory JoseraAdultActive.fromJson(Map<String,dynamic> Json) {    return new JoseraAdultActive(        description: Json['description_tab'],price: Json['product_price_from']);  }}

这是我显示提取信息的地方:

new Container(                    padding: const EdgeInsets.only(top: 10.0,right: 5.0),child: new FutureBuilder<JoseraAdultActive>(                        future: fetchPost(),builder: (context,snapshot) {                          if (snapshot.hasData) {                            return new Text('');                          } else if (snapshot.hasError) {                            return new Text('Error');                          }                          return new CircularProgressIndicator();                        })),

我还认为JsON.decode不能用于HTML代码,但找不到任何可以使用的东西.试图通过子串切片它也不起作用.

在此先感谢您的帮助!

解决方法 在进一步推动Seth的评论时,您应该能够使用HTML库.

这应该是这样的:

import 'package:HTML/parser.dart' show parse;import 'package:HTML/dom.dart';var document = parse(response.body);var priceElement = document.getElementsByClassname("product_price_from");// priceElement may have weird formatting (I see &nbsp;) so you might need to do some parsing// here to solve that

我还建议学习正则表达式(RegEx),因为它们可以用来解决这个问题,并且对各种编程问题都很有用.这是a link to dart’s regex documentation和一般RegEx tutorial.

话虽如此,此代码将取决于URL更改,网站更改或关闭,特定产品不再销售,并将使用用户的数据,以及可能或可能不在您控制之下的许多其他因素 – 所以我对将其放入生产代码有点怀疑,即使它只是用于避难所的应用程序.至少确保它有一个安全的后备(即回落到11500英尺的当前价格).

如果/当价格发生变化时,我会仔细考虑这是否真的有必要,而不是每年自己更新一次.或者,如果您的应用程序有服务器后端(甚至可以访问避难所的网站 – 您可以将页面放在shelter.com/donationprices/joseraadultactive,只返回“11499”),我建议将其作为参数应用程序可以检索您可以更新(如果您绝对希望它自动完成,请在服务器上运行一次任务,以检索最新价格).此外,我不知道庇护所在哪里工作,但在我居住的地方,他们倾向于大批量购买食物或者当它在售时,所以一袋食物的价格有点无关紧要 – 此时你可能还有一个捐赠按钮,带有一个袋子的图片和任意价格,因为你可能会得到尽可能多的捐款,还有比应用程序有问题的更多.

总结

以上是内存溢出为你收集整理的dart – Flutter:获取HTML页面的某些元素全部内容,希望文章能够帮你解决dart – Flutter:获取HTML页面的某些元素所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/web/1001880.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存