2014-02-27 51 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(); 
    } 

     }