2016-06-12 85 views
1

所有可見的文字,我想創建谷歌瀏覽器的搜索功能。給定一個字符串,它將突出顯示所有包含此字符串的區我使用java。我提取從HTML

要做到這一點,首先我需要提取所有可見的文本。我試圖分析HTML頁面,以弄清如何只提取文本。

對於像這樣的部分,似乎

要做到這一點,我計劃使用jsoup。我不確定如何從看起來像這樣的部分提取文本。 (這是一個帶有「閱讀更多」鏈接和「顯示更少」鏈接的YouTube評論)。

從本節開始,我嘗試提取「不會說謊,DAT狗很可愛」和(「萊斯聚體」或「可見mindre」,這取決於它們是可見的)。

<div class="comment-renderer-text" tabindex="0" role="article"> 
    <div class="comment-renderer-text-content">Not gonna lie, dat dog is ADORABLE</div> 
     <div class="comment-text-toggle hid"> 
      <div class="comment-text-toggle-link read-more"> 
       <button class="yt-uix-button yt-uix-button-size-default yt-uix-button-link" type="button" onclick="return false;"> 
        <span class="yt-uix-button-content">Les mer 
        </span> 
       </button> 
      </div> 
     <div class="comment-text-toggle-link show-less hid"> 
      <button class="yt-uix-button yt-uix-button-size-default yt-uix-button-link" type="button" onclick="return false;"> 
       <span class="yt-uix-button-content">Vis mindre 
       </span> 
      </button> 
     </div> 
    </div> 
</div> 

回答

0

我打算假定給出的html代碼已經存在於名爲doc的文檔中。

String text = doc.select("div.comment-renderer-text-content").first().text(); 

doc.select命令獲取包含該指定HTML查詢的元素。然後我得到第一個,並將其轉換爲文本。

更可以在這裏讀到:Jsoup Selector

編輯:

您可以使用此代碼來獲取可見的文字,而不是每個等級:

String text = doc.body().text(); 
+0

我想提取任何可見的文本在一個html文件中。因此這個解決方案太具體。 – mcNogard

+0

@mcNogard你想是跨度,而不是div的文本「可見mindre」和「萊斯海」? – Jop

+0

在這種情況下,我也想「可見mindre」,「萊斯海」中提取,如果他們也都是可見的。我沒有意識到這個html部分有更多可見的文本。我將編輯我的原始文章。 – mcNogard