如何解决Flutter:如何在网页加载完成后从 url 获取响应?
我想从我的颤振代码中的 dio get 请求中通读网站的 HTML。该网站接受一个输入,就我而言是在 URL 中,并在显示从后端接收到的所有数据之前加载一段时间。因为解析我的请求和抓取显示需要时间,所以我的dio请求只给我显示了一半的网站,另一半没有显示,因为还没有抓取。我需要帮助让它等待或我如何得到另一半。
这是我的代码:
BaseOptions options = new BaseOptions(
connectTimeout: 10000,receiveTimeout: 10000,);
Dio dio = new Dio(options);
String url = 'https://x.com/?url=https://x.x.x/x/';
try {
final response = await dio.get(url);
print(response.data);
final document = parse(response.data);
final downloadPage = document.getElementsByClassName('results-list');
for (Element resultsAll in downloadPage) {
final downloadLinks =
resultsAll.getElementsByClassName('download-link');
print(resultsAll.classes.toString());
}
} catch (e) {
print(e);
}
解决方法
我认为问题不在于您的代码,而在于您尝试加载的站点。您正在使用的包正在等待服务器返回 HTTP 响应代码(在大多数情况下成功为 200),然后关闭未来并从服务器返回响应。
我想在您的情况下发生的情况是您尝试加载的页面在加载初始页面后使用 JavaScript 加载其他内容。类似于 Facebook、Instagram 和其他人可以无限滚动浏览的方式。
为了解决这个问题,您将无法使用基于请求的包来提取数据,而是使用更符合 Web 视图包的方法。这样的包会加载站点,就像加载到浏览器中一样,然后您就可以从视图中读取数据。
你可以看看这里,例如:https://medium.com/@janithsg/flutter-extract-web-page-html-content-from-webview-1c39e43e675d
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。