2013-12-22 127 views
1

我剛開始玩弄Jsoup,所以按照他們在網站上的教程。我認爲這個代碼應該可以正常工作,但是當我在netbeans上運行它時,我遇到了錯誤。Jsoup,從網站中提取鏈接,圖像。運行時例外

這是我使用的代碼:

`

/** 
* 
* @author Slabs One 
*/ 
public class ParseWebpage { 

/** 
* @param args the command line arguments 
*/ 
public static void main(String[] args) throws IOException { 
    Validate.isTrue(args.length == 1, "http://www.gumtree.com.au/"); 
    String url = args[0]; 
    print("Fetching %s...", url); 

    Document doc = Jsoup.connect(url).get(); 
    Elements links = doc.select("a[href]"); 
    Elements media = doc.select("[src]"); 
    Elements imports = doc.select("link[href]"); 

    print("\nMedia: (%d)", media.size()); 
    for (Element src : media) { 
     if (src.tagName().equals("img")) 
      print(" * %s: <%s> %sx%s (%s)", 
        src.tagName(), src.attr("abs:src"), src.attr("width"), src.attr("height"), 
        trim(src.attr("alt"), 20)); 
     else 
      print(" * %s: <%s>", src.tagName(), src.attr("abs:src")); 
    } 

    print("\nImports: (%d)", imports.size()); 
    for (Element link : imports) { 
     print(" * %s <%s> (%s)", link.tagName(),link.attr("abs:href"), link.attr("rel")); 
    } 

    print("\nLinks: (%d)", links.size()); 
    for (Element link : links) { 
     print(" * a: <%s> (%s)", link.attr("abs:href"), trim(link.text(), 35)); 
    } 


} 

private static void print(String msg, Object... args) { 
    System.out.println(String.format(msg, args)); 
} 

private static String trim(String s, int width) { 
    if (s.length() > width) 
     return s.substring(0, width-1) + "."; 
    else 
     return s; 
} 

} 

`

有不應該是這個代碼的任何問題,但在運行時我得到這個錯誤:

Exception in thread "main" java.lang.IllegalArgumentException: http://www.gumtree.com.au/ 
at org.jsoup.helper.Validate.isTrue(Validate.java:45) 
at parsewebpage.ParseWebpage.main(ParseWebpage.java:25) 

任何洞察力,爲什麼這不起作用將不勝感激

+0

那麼,它看起來像你沒有運行任何命令行參數,並且'Validate'確保你正在運行它一個命令行參數。 –

+0

抱歉,由於某種原因,整個班級都沒有被抄錄。我有 'package parsewebpage; import org.jsoup.Jsoup; import org.jsoup.helper.Validate; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.select.Elements; 進口產生java.io.IOException;' 在類的頂部,不知道爲什麼沒有得到coppied在初始後 –

+0

我下面[鏈接](http://jsoup.org/cookbook/提取數據/示例列表鏈接) –

回答

0

要通過命令行參數 in Netbeans,您必須執行以下操作。

  • 右鍵單擊該項目,然後單擊屬性
  • 選擇在側邊欄運行
  • 選擇使用瀏覽對話框
  • 輸入參數(URL)
  • 主類(ParseWebpage)
  • 單擊確定

現在,如果您運行主類(ParseWebpage),運行時參數將在NetBeans IDE中傳遞

+0

@tony完成這項工作? – Keerthivasan