在Flutter中获取HTML之前,Http.get部分加载和解析网站

问题描述 投票:0回答:1

我试图在颤动中执行Web解析。我想抓住某个网站https://www2.9anime.to/watch/black-clover-dub.2y44/0wql03的所有剧集链接和号码

这是我解析html的代码:

    var url = 'https://www2.9anime.to/watch/black-clover-dub.2y44/0wql03';

          http.Response response = await http.get((url));
          dom.Document document = parse(response.body);

List<dom.Element> rapidvideoepisodelinks = document.getElementsByTagName('#servers-container');
List<Map<String, dynamic>> rapidvideoepisodelinkMap = [];
for (var link in rapidvideoepisodelinks) {
        rapidvideoepisodelinkMap.add(
        {
        /////////////////////some logic////////////////////
      });
    }
var rapidvideoepisodejson = json.encode(rapidvideoepisodelinkMap);
rapidvideoepisodelist = (json.decode(rapidvideoepisodejson) as List)
          .map((data) => new Rapidvideoepisodelist.fromJson(data))
          .toList();
      setState(() {
        isLoading = false;
      });

但问题是,剧集内容区域需要几秒钟才能加载。 http.get在加载这个部分之前就过早地加载了网站。因此,我无法完全解析它。包含该集的此区域甚至未加载,因此不会解析其HTML。除了像这样需要额外时间加载的区域外,其他所有东西似乎都能正常工作。

enter image description here

enter image description here

有没有办法解决这个问题?就像在网站完全加载之后解析网站一样。

任何帮助真的很感激。

android dart flutter dart-html
1个回答
1
投票

你的想法并不正确。你无法解析它的原因不是因为部分负载。 http.get正在获取HTML文件。就这样。你只是得到HTML文件,你得到它。您在浏览器中看到的不是该HTML文件。您的浏览器首先获取HTML文件,然后从HTML文件中找到它应该加载的其他内容,然后加载JPG文件,CSS文件,JS脚本等...

您尝试解析的内容是通过在浏览器中执行JS脚本来操纵的。你无法用http.get实现这一目标。我不确定如何在颤动中实现你想要的东西。您可能需要在dart中使用某种伪浏览器来加载URL,然后解析生成的html。你永远无法使用http.get来实现它,因为你确实得到了HTML文件,但实际上你并不是在寻找那个HTML文件。我不确定你是否能理解我的意思。

© www.soinside.com 2019 - 2024. All rights reserved.