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

有没有办法在flutter中解析用javascript创建的html?

如何解决有没有办法在flutter中解析用javascript创建的html?

我想使用 metadata_fetch package获取 OGP。 此包的实现使用 html (parse) package。它适用于大多数网页。 但是,有些网页无法获取,例如 this one。我认为这是因为 html 是由 javascript 生成的。有没有办法解析这样的页面

解决方法

为了他人的利益,以下是我根据 @Randal Schwartz 的想法制作的来源。

const String url_unext = 'https://video.unext.jp/title/SID0050925';
WebViewController _controller;
Stack(
  children: [
    WebView(
      onWebViewCreated: (controller) {
        _controller = controller;
      },javascriptMode: JavascriptMode.unrestricted,initialUrl: url_unext,onPageFinished: (_) async {
        html = await _controller.evaluateJavascript("window.document.firstElementChild.outerHTML;");
        // Use Metadata_fetch to parse
        final data = getOpenGraphDataFromResponse(html);
        print(data);
      },),// else widget here
    Container(),],

但是,我担心运行恶意脚本。如果有更好的方法,请告诉我。我正在研究使用 oembed 的可能性。 再次非常感谢您,@Randal Schwartz

,

您应该能够创建一个 webview_flutter 并注入某种 Javascript 来为您遍历 DOM 并将其序列化以返回,这当然会在页面 javascript 已经构建 DOM 之后发生。我还没有这样做,但它可能是一个有趣的项目。

编辑:它可能就像捕获 document.firstElementChild.outerHTML 的字符串响应一样简单。

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