微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在flutter中从<span>标签中获取数据

如何解决在flutter中从<span>标签中获取数据

我正在尝试使用此代码从网站获取实时黄金价格。

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

getWebData() async {
  final response = await http.get(Uri.parse(
      "https://www.mcxindia.com/en/market-data/get-quote/FUTCOM/GOLD/05FEB2021"));
  dom.Document document = parser.parse(response.body);
  print(document);
  var element = document.getElementById("litPrice");
}

我知道如何在 <a> 标签<p> 标签之间获取文本,但在这种情况下,它只是在 <span> 标签之间,看起来像 <span id="litPrice">47526</span> 我不知道如何获得这个号码。

html pub dev http pub dev

解决方法

该方法与 <a><p> 标签的情况相同。标签之间的文本可通过 element.innerHtml

获得

我认为您遇到的问题是您选择的标签不存在于从该网址返回的文档中。在浏览器中,该元素在文档加载后通过 javascript 插入到文档中。

有几种方法可以解决这个问题:

  1. 使用 API - 如果您尝试访问的服务提供 REST API,那么您可以查看您尝试访问的数据是否可通过该路由获得。这是迄今为止更好的方法(如果可用)。

  2. 使用无头浏览器 - 这是一个非常重要的解决方案,可能不适用于您的用例,但无论如何我都会把它作为一种可能性放在这里。在 dart 中,您可以使用 puppeteer 库与无头 chrome 浏览器进行交互。通过这种方式,您可以加载页面,等待脚本运行,然后抓取 DOM - 然后您应该会找到您正在寻找的元素。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。