簡體   English   中英

如何在加載內容后加載 HTML

[英]How to load HTML after content has been loaded

我試圖讓網站上的內容的列表(這個如果有人有興趣)。 布局最近發生了變化,現在它們不會一次加載所有內容,而是使用魔法(可能是 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 只加載 HTML 並且不執行任何 javascript,頁面從來沒有機會加載內容。 您必須使用實際的瀏覽器引擎或像 selenium 這樣的網絡驅動程序來加載數據。

對於這個特定問題,我能夠通過此網頁的 API 加載 Json 數據直接獲取內容。

如果我理解您的問題,那么您最好的選擇是使用 Selenium 驅動程序。 類似問題的鏈接

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM