2016-02-06 87 views
0

我有一個網站,我想從使用Jsoup獲取視頻鏈接。但我無法這樣做我的程序會引發錯誤。有人能幫幫我嗎?無法使用JSoup從本網站獲取視頻源鏈接?

下面是代碼:

import java.io.IOException; 
import org.jsoup.Jsoup; 
import org.jsoup.nodes.Document; 
import org.jsoup.nodes.Element; 
import org.jsoup.select.Elements; 
public class MovMaker { 
    public static void main(String[] args) { 
    try { 
     String url="http://www.tamilyogi.tv/7aum-arivu-2011-hd-720p-tamil-movie-watch-online/"; 
     Document doc = Jsoup.connect(url).get(); 
     Element vid = doc.getElementsByTag("video").get(0); 
     System.out.println("\nlink: " + vid.attr("src")); 
     System.out.println("text: " + vid.text()); 
     catch (IOException e) { 
    e.printStackTrace(); 
    } 
    } 
} 

我的錯誤:在線程 「主要」 java.lang.IndexOutOfBoundsException

異常:指數:0,大小:0 在java.util.ArrayList中。 rangeCheck(來源不明) 在java.util.ArrayList.get(來源不明) 在MovMaker.main(MovMaker.java:16)

,我想從獲取數據的頁面的源代碼是:Here

Im新的java和jsoup完全我會感激,如果有人可以給我的代碼。

問候, Bhuvanesh

+0

如果您的問題解決了,請考慮接受我的答案。如果不是,請說明現在的問題。 – luksch

回答

1

有一個在你給的鏈接的直接加載HTML沒有<video>標籤。標記是由瀏覽器中的一些JavaScript創建的。由於JSoup不運行任何JavaScript,因此您在這裏運氣不佳。

你可以做的是既可以使用類似

或您分析HTML的內容,也許是發生在網絡流量當您加載該網站時,瀏覽器會發現您是否可以手動構建該信息中的鏈接。在你的情況下,我有一個快速瀏覽HTML,發現視頻標籤是在IFrame內生成的。在iframe的來源你覺得這個部分:

<script type="text/javascript"> jwplayer("vplayer").setup({ 
    sources: [{file:"http://cdn7.vidmad.tv/h7todtdxamlbu3tf6rutlihpzoz4di2fcsaje74hlrcqda7qibjmlb4vblxq/v.mp4",label:"720p"},{file:"http://cdn7.vidmad.tv/h7todtdxamlbu3tf6rutlihpzoz4di2fcsaje74hljcqda7qibjjd3opruyq/v.mp4",label:"360p","default": "true"},{file:"http://cdn7.vidmad.tv/h7todtdxamlbu3tf6rutlihpzoz4di2fcsaje74hlbcqda7qibjgcvfli2eq/v.mp4",label:"240p"}], 
    image: "http://cdn7.vidmad.tv/i/01/00000/cjwf05thn2vm.jpg", 
    duration:"9607", 
    width: "100%", 
    height: "350", 
    aspectratio: "16:9", 
    preload: "none", 
    androidhls: "true", 
    startparam: "start" 

    ,tracks: [] 
    ,skin: "glow",abouttext:"VidMAD", aboutlink:"http://vidmad.tv" 
    }); 

... 

</script> 

所以URL是<script>標籤的一部分。您可以使用正則表達式來獲得它:

Document doc = Jsoup.connect("http://www.tamilyogi.tv/7aum-arivu-2011-hd-720p-tamil-movie-watch-online/") 
     .userAgent("Mozilla/5.0") 
     .get(); 

Element iframeEl = doc.select("iframe[src*=embed]").first(); 
if (iframeEl != null){ 
    Document frameDoc = Jsoup.connect(iframeEl.attr("src")) 
      .userAgent("Mozilla/5.0") 
      .get(); 
    Elements scriptEls = frameDoc.select("script"); 
    for (Element scriptEl :scriptEls){ 
     String html = scriptEl.html(); 
     Pattern p = Pattern.compile("sources:\\s*\\[\\{file:\"([^\"]+)"); 
      Matcher m = p.matcher(html); 
      if (m.find()){ 
       String link = m.group(1); 
       System.out.println(link); 
       break; 
      } 
    } 
} 

當然,我上面的解決方案只適用於本網站和鏈接。您可能需要調整方法以適應您的需求,但總體思路現在應該清楚。

0

`

Document doc = Jsoup.connect("http://www.tamilyogi.tv/7aum-arivu-2011-hd-720p-tamil-movie-watch-online/") 
      .userAgent("Mozilla/5.0") 
      .get(); 
    Element iframeEl = doc.select("iframe").first(); 
    System.out.println(iframeEl.absUrl("src")); 

`

希望這對你的作品。