2014-02-27 84 views
0

我正在嘗試製作一個應用程序,它將從網站中掃描鏈接。作爲一個起點,我只是想把它們作爲系統消息。當我運行程序時,我根本沒有看到任何消息。哪裏不對?請幫忙。用jsoup和android颳去網站的鏈接

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

import android.app.Activity; 

import java.io.*; 


public class HTMLLinkExtractor extends Activity { 


     public static void main() { 
      scrapeLink(); 
     } 




      public static void scrapeLink(){ 
       File input = new File("/tmp/input.html"); 
       Document doc = null; 
       try { 
        doc = Jsoup.parse(input, "UTF-8", "http://www.homedepot.com"); 
        Elements link = doc.select("a[href]"); 
        String stringLink = null; 

          for(int i=0; i<link.size(); i++){ 

           stringLink = link.toString(); 
           System.out.println(stringLink); 
          } 

        System.out.println(link); 
       } catch (IOException e) { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
       } 
       Element links = doc.select("a[href]").first(); 
       System.out.println(links); 
       } 
} 
+0

答案是什麼你input.html包含哪些內容? – PopoFibo

+0

我沒有一個我在jsoup網站上找到那個代碼的一部分,那是它創建的一個文件。 –

+0

你可以直接連接到url,在這種情況下,回答下面的 – PopoFibo

回答

1

因爲你沒有實際包含HTML數據(基本URI是解決在HTML中的相關鏈接),您可以修改代碼以直接直接連接到網站,並獲取數據的input.html

嘗試,

public static void main(String... args) { 
     scrapeLink(); 
    } 

    public static void scrapeLink() { 
     // File input = new File("/tmp/input.html"); 
     Document doc = null; 
     try { 
      doc = Jsoup.connect("http://www.homedepot.com").get(); 
      Elements link = doc.select("a[href]"); 
      String stringLink = null; 

      for (int i = 0; i < link.size(); i++) { 

       stringLink = link.toString(); 
       System.out.println(stringLink); 
      } 

      System.out.println(link); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
     Element links = doc.select("a[href]").first(); 
     System.out.println(links); 
    } 

輸出,

<a href="http://www.homedepot.ca/?eid=us-language-selection-en&amp;utm_source=us-language-selection-en"><font color="#ED8A3D"><b>English</b></font></a> 
<a href="http://www.homedepot.ca/accueil?eid=us-language-selection-fr&amp;utm_source=us-language-selection-fr"><font color="#ED8A3D"><b>Francais</b></font></a> 
... 

請注意,我將主程序作爲Java應用程序運行,您可以將其更改爲在ADT內運行。

+0

這在嚴格模式下工作謝謝你生病後會如何處理adt –

+0

@BillyKorsen當然,不客氣 – PopoFibo

0

爲Android的AsyncTask

class scrapeLinks extends AsyncTask<Void,Void,Void> { 

     @Override 
     protected void onPreExecute() { 
      super.onPreExecute(); 
      pDialog = new ProgressDialog(MainActivity.this); 
      pDialog.setMessage("getting links"); 
      pDialog.setIndeterminate(false); 
      pDialog.setCancelable(true); 
      pDialog.show(); 
     } 


    @Override 
    protected Void doInBackground(Void... params) { 
     Document doc = null; 
      try { 
       doc = Jsoup.connect("http://www.homedepot.com").get(); 
       Elements link = doc.select("a[href]"); 
       String stringLink = null; 

       for (int i = 0; i < link.size(); i++) { 

        stringLink = link.toString(); 
        System.out.println(stringLink); 
       } 

       System.out.println(link); 
      } catch (IOException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
      Element links = doc.select("a[href]").first(); 
      System.out.println(links); 

      return null; 
     } 
     } 

    protected void onPostExecute(Void...params){ 
     pDialog.dismiss(); 
    } 

     }