0

我正在应用以下示例http://jsoup.org/cookbook/extracting-data/example-list-links来列出链接。

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;
    }
}

我只用“ http://www.google.com ”替换了“”用法:提供要获取的网址“”。JSoup 文档太差了(如我所见)。因此,我收到以下错误并且无法弄清楚原因:线程“主”java.lang.IllegalArgumentException 中的异常:用法:http ://www.google.com at org.jsoup.helper.Validate.isTrue(Validate .java:45) 在 TestClass.main(TestClass.java:16)

我发现以下关于相同问题的帖子:importing java libarary但我已经用网站名称替换了用法:...等,但没有帮助。

4

2 回答 2

1

我只用“http://www.google.com”替换了“”用法:提供要获取的网址“”。

嗯,这表明你不明白这个Validate.isTrue电话在做什么。在更改代码之前不要在不知道代码在做什么的情况下更改代码,这一点非常重要。

您不打算更改该代码。您需要运行此代码并将 URL 作为命令行参数提供。第一条语句验证确实存在一个命令行参数。

所以把代码放回原来的样子,然后运行

java -cp [whatever] org.jsoup.examples.ListLinks http://google.com
于 2012-06-21T19:30:58.840 回答
-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");
}
于 2012-08-12T01:58:34.533 回答