2016-09-19 29 views
-1

我想从https://s所有链接vedeo.com /下载?网址链接的所有* = https://www.youtube.com/watch?v=GQx7W3jrZiE如何从网络

但是,当我运行我的代码,我只是得到第一个。 如何获取所有链接?通过使用循环或任何东西,以及如何创建循环.. 任何人都可以帮助我吗?

package com.example.root.mytestjsoup; 

import android.os.AsyncTask; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 
import android.widget.TextView; 

import org.jsoup.Jsoup; 
import org.jsoup.nodes.Document; 
import org.jsoup.nodes.Element; 
import org.jsoup.select.Elements; 

public class MainActivity extends AppCompatActivity { 

    Button but; 
    TextView text; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     but = (Button)findViewById(R.id.button); 
     text = (TextView)findViewById(R.id.textView); 

     but.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       new scrap().execute(); 
      } 
     }); 

    } 

    public class scrap extends AsyncTask<Void,Void,Void>{ 

     String word; 
     Elements link; 
     Element linx; 
     String linkHref; 

     @Override 
     protected Void doInBackground(Void... params) { 

      try { 
       Document doc = Jsoup.connect("https://savedeo.com/download?url=https://www.youtube.com/watch?v=GQx7W3jrZiE").get(); 
       link = doc.select("a[data-event]"); 
       Elements div = doc.getElementsByAttribute("data-event"); 
       String attr = div.attr("href"); // when it change to data-event, it will got the value of data-event. 

       word = attr; 

      }catch (Exception e){ 
       e.printStackTrace(); 
      } 

      return null; 
     } 

     @Override 
     protected void onPostExecute(Void aVoid) { 
      super.onPostExecute(aVoid); 
      text.setText(word); 
     } 
    } 


} 

回答

0

我认为以下行在您的代码中无效。

String attr = div.attr("href"); 

因为

Elements div = doc.getElementsByAttribute("data-event"); 

元素或者换句话说元小号

解返回和列表

第1步:您可以编写和条件,这样

doc.select("a[href][data-event]") 

这意味着选择包含href和数据事件标签

步骤2:可以在需要时环元件

Elements links = doc.select("a[href][data-event]"); 
for (Element link : links) { 
    //download from youtube|mp4|1280x720   
    if(link.text().contains("download"))//find the link with some texts 
    { 
     System.out.println("here is the element you need"); 
     System.out.println("\nlink : " + link.attr("href")); 
     System.out.println("text : " + link.text()); 
    } 
} 

参考

https://jsoup.org/cookbook/extracting-data/selector-syntax

https://jsoup.org/cookbook/extracting-data/example-list-links