Flutter WebView:从呈现的 URL 中检索所有完全生成的 html(类似于“检查元素”)

Posted

技术标签:

【中文标题】Flutter WebView:从呈现的 URL 中检索所有完全生成的 html(类似于“检查元素”)【英文标题】:Flutter WebView: Retrieve ALL fully generated html from a rendered URL(Similar to "Inspect Element") 【发布时间】:2020-11-16 09:21:37 【问题描述】:

我正在尝试从this webpage 获取事件的标题并将它们放入列表中:

Since using HTTP did not get the fully generated html,我决定尝试使用flutter_webview_plugin

    在隐藏的 web 视图上加载所需的 URL 提取完全生成的 HTML 解析 HTML 以获得我需要的标题

我正在使用此代码来加载 webview:

flutterWebviewPlugin.launch(
    "https://www.volunteermatch.org/search/?l=Long%20Grove,%20IL%2060047,%20USA",
    hidden: true);
flutterWebviewPlugin.onStateChanged.listen((viewState) async 
  if (viewState.type == WebViewState.finishLoad) 
    flutterWebviewPlugin
        .evaljavascript("document.documentElement.outerHTML")
        .then((html) 
      print(html);
      //some code to parse html
      flutterWebviewPlugin.close();
    );
  
);

问题是,即使在 webview 加载完成后使用 JavaScript 代码检索 HTML 也不会给我与在 Safari 上“检查元素”相同的 HTML,而且没有标题也在其中。我错过了什么?

【问题讨论】:

看起来您正在抓取网页。请查看下面的帖子itnext.io/write-your-first-web-scraper-in-dart-243c7bb4d05 @NileshSenta 感谢您的回复,我会查看链接。 【参考方案1】:

好吧,现在我觉得很傻。

由于我在 iPhone 上运行该应用程序,因此我使用 Xcode 检查print(html) 的输出。出于某种原因,Xcode 不会打印出所有的 html 字符串:

Xcode 只留下一个<...>(右下角用红色圈出)并决定不打印其余部分。

【讨论】:

运气好用这个吗?我仍然得到像 http.get() 这样的第一个 html,而不是我在 webview 中看到的完整 html @Saifallak 基本上我的问题只是一个 Xcode 打印问题,而我使用的代码实际上确实得到了所有的 html。

以上是关于Flutter WebView:从呈现的 URL 中检索所有完全生成的 html(类似于“检查元素”)的主要内容,如果未能解决你的问题,请参考以下文章

Flutter 按钮应该加载新的 webview url

Flutter url_launcher 无法启动 webview 短谷歌表单链接

如何在 WebView Flutter 中允许 mailto 和 tel URL 方案?

应该如何调用 Override Url

flutter 安卓webview 无法加载http解决方案net::ERR_CLEARTEXT_NOT_PERMITTED

flutter中使用webview