2012-06-21 2 views
0

Я применяю следующий пример http://jsoup.org/cookbook/extracting-data/example-list-links, чтобы перечислить ссылки.Ошибка JSoup: java.lang.IllegalArgumentException

package org.jsoup.examples; 

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

import java.io.IOException; 

/** 
* Example program to list links from a URL. 
*/ 
public class ListLinks { 
    public static void main(String[] args) throws IOException { 
     Validate.isTrue(args.length == 1, "usage: supply url to fetch"); 
     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; 
    } 
} 

я только заменить "" Использование: поставки URL для извлечения "" с "http://www.google.com". Документация JSoup настолько бедна (как я вижу). Итак, Im получает следующую ошибку: & не в состоянии понять, почему: Исключение в потоке «main» java.lang.IllegalArgumentException: использование: http://www.google.com at org.jsoup.helper.Validate.isTrue (Validate.java:45) at TestClass.main (TestClass.java:16)

Я нашел следующее сообщение об этой же проблеме: importing java libarary Но я уже заменил использование: ... и т.д. с именем веб-сайта и не помогает.

ответ

1

I only replaced ""usage: supply url to fetch"" with "http://www.google.com".

Ну, это говорит о том, что вы не понимаете, что делает звонок Validate.isTrue. Невероятно важно, чтобы вы не меняли код, не зная, что он делает, прежде чем изменять его.

Вы не означает, чтобы изменить этот код. Вы должны запустить этот код и указать URL-адрес в качестве аргумента командной строки. Это первое утверждение подтверждает, что - это точно один аргумент командной строки.

Так поставить код обратно к тому, что он есть, и запустить

java -cp [whatever] org.jsoup.examples.ListLinks http://google.com 
+0

Есть ли способ запустить этот код из eclipse, а не в командной строке? Потому что, когда я пытался, похоже, я не могу войти в ссылку. – Mem

+0

Когда я запускаю код из eclipse, я получаю следующую ошибку: Исключение в потоке «main» java.lang.IllegalArgumentException: использование: указать адрес для получения \t at org.jsoup.helper.Validate.isTrue (Validate.java: 45) \t на TestClass.main (TestClass.java:16) – Mem

+0

@Mem: Да - отредактируйте конфигурацию запуска, чтобы либо запросить аргументы командной строки, либо просто скопировать аргументы командной строки в конфигурацию запуска. –

-1

Попробуйте вместо пресет с сайта ... Я нашел это на другом стеке д &

public class ListLinks { 
    public static void main(String[] args) throws IOException { 

     String url = "http://shopping.yahoo.com"; 
     print("Fetching %s...", url); 

     Document doc = Jsoup.connect(url).get(); 
     Elements links = doc.getElementsByTag("a"); 
} 
+0

Пожалуйста, включите ссылку на исходный вопрос из StackOverflow! – t0mm13b

Смежные вопросы