当前位置: 首页 > 知识库问答 >
问题:

如何在加载内容后加载HTML

韶和璧
2023-03-14

我试图在一个网站上获得一个内容列表(若有人感兴趣的话,这一个)。布局最近发生了变化,现在他们不会一次加载所有内容,而是使用magic(可能是js)。我目前正在使用JSoup分析HTML,但我愿意接受建议。

这就是我得到的:

<div class="row" data-v-6e4dbe9e>
 <div class="col-17 podcasts-group" data-v-6e4dbe9e>
  <div class="loading-spinner" data-v-6e4dbe9e>      //the devil himself
   <div class="spinner" data-v-ac3cb376 data-v-6e4dbe9e>
    <div class="rect1" data-v-ac3cb376></div>
    <div class="rect2" data-v-ac3cb376></div>
    <div class="rect3" data-v-ac3cb376></div>
    <div class="rect4" data-v-ac3cb376></div>
    <div class="rect5" data-v-ac3cb376></div>
   </div>
  </div>
  <div mode="in-out" class="transition-group row" data-v-6e4dbe9e>
   //Here should be stuff!
  </div>
 </div>
</div>

实现此目的的代码:

String selector = "div.podcasts-items";
Elements elem = Jsoup.connect(link).get().select(selector)
System.out.println("html: "+elem.html());

这是我想看到的(复制从检查元素后,页面加载了所有的内容):

<div class="row" data-v-6e4dbe9e>
 <div class="col-17 podcasts-group" data-v-6e4dbe9e>
  <!---->  //begone evil!
  <div mode="in-out" class="transition-group row" data-v-6e4dbe9e>
   <div class="col-17 col-md-8 center-margin" data-v-6e4dbe9e="">...</div>
   <div class="col-17 col-md-8 center-margin" data-v-6e4dbe9e="">...</div>
   <div class="col-17 col-md-8 center-margin" data-v-6e4dbe9e="">...</div>
   <div class="col-17 col-md-8 center-margin" data-v-6e4dbe9e="">...</div>
  </div>
 </div>
</div>

谷歌帮不了什么忙,因为与微调器等相关的所有内容都与javascript有关。

解决方案:

由于JSoup只加载超文本标记语言,不执行任何javascript,页面从来没有机会加载内容。你必须使用实际的浏览器引擎或像selenium这样的网络驱动程序来加载数据

对于这个特定的问题,我能够通过这个网页的API加载Json数据直接获取内容。

共有1个答案

邹禄
2023-03-14

如果我理解你的问题,那么你最好的选择是使用硒驱动程序。类似问题的链接

 类似资料:
  • 问题内容: 我知道这个问题已经被问过很多次了,但是我还没有找到一个明确而有用的答案,所以我想我会以更清晰的格式写这个问题吗? 问题是,当您使用.load()函数并且您需要在加载的文件中运行的javascript时,由于我猜测DOM已经加载,因此无法正常运行。 解决此问题的简单方法是再次将javascript再次加载到已加载的文件中,但是如果要加载的文件很多,则到处都是javascript并不是很好

  • 问题内容: 我有一种情况,我加载了一个父网页(可能是Java JSP),该网页包含我正在使用文档就绪函数内的ajax(asynch)加载的内容,希望该页面能够快速呈现任何内容,然后运行jQuery代码以页面显示后执行紧急工作。 它按照预期在Firefox中正常工作-页面快速呈现,然后jquery代码运行ajax调用并加载其他元素。 在IE8中,它等待直到一切完成,然后呈现完成的结果。它不支持我的文

  • 我想做一个reactjs页面懒惰加载图像。因此,我调用lazyLoadImages()内部的组件didMount()。我发现位于浏览器选项卡的浏览器加载指示器仍然一路旋转,直到加载所有图像。这让我认为我所做的并没有提供真正的懒惰加载图像体验。 有趣的是,如果我在setTimeout中用一个不太短的timeout参数包装lazyLoadImages(),例如100ms(不是0或甚至50ms),那么页

  • 注意: 本教程假定你已经下载和安装了CodeIgniter开发环境。 首先,你需要创建一个可以处理静态内容请求的控制器类。控制器,是一个用来代理完成某项任务的PHP类,它充当基于MVC架构应用程序的“粘合剂”(译者注:控制器用来粘合/协调不同模型和视图。随着教程的深入,你会更深刻的理解这一点)。 举例来说,假设存在某个针对如下URL的请求: http://example.com/news/late

  • Note: 这篇教程假设你已经下载好 CodeIgniter ,并将其 安装 到你的开发环境。 你要做的第一件事情是新建一个 控制器 来处理静态页面,控制器就是一个简单的类, 用来完成你的工作,它是你整个 Web 应用程序的 “粘合剂” 。 例如,当访问下面这个 URL 时: http://example.com/news/latest/10 通过这个 URL 我们就可以推测出来,有一个叫做 "n

  • 我正在为我的网站创建一个打印页面:http://vivule.ee/0/print 我希望在页面加载后启动。我尝试过不同的方法,但都不成功。我知道这是可能的,因为我可以监听完成的Ajax调用,但在Angular中是如何实现的?