【问题标题】:jsoup tutorial throwing java.lang.IllegalArgumentExceptionjsoup 教程抛出 java.lang.IllegalArgumentException
【发布时间】:2014-09-05 02:21:50
【问题描述】:

我正在关注 Jsoup 示例以尝试了解它是如何工作的,并按原样复制和粘贴了所有代码,但我不断收到错误 'Exception in thread "main" java.lang.IllegalArgumentException: http://news.ycombinator.com/ at org .jsoup.helper.Validate.isTrue(Validate.java:45) 在 jsoup.examples.ListLinks.main(ListLinks.java:21)'。 IDE 是 NetBeans。哪里出错了?

package 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, "http://news.ycombinator.com/");
       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;
   }
}

【问题讨论】:

  • 你能发布完整的例外吗?
  • 你在运行时传递参数了吗?如果在命令提示符中不传递任何参数,可能会导致错误。
  • 完全异常:线程“main”中的异常 java.lang.IllegalArgumentException: news.ycombinator.com at org.jsoup.helper.Validate.isTrue(Validate.java:45) at jsoup.examples.ListLinks。主(ListLinks.java:21)
  • 有点离题,但我不明白 args.length==1 在这里做了什么。我正处于 Java 的初级阶段。

标签: java jsoup


【解决方案1】:

返回的响应码是403,表示禁止。

在获取之前尝试设置用户代理。比如:

Document doc = Jsoup.connect(url).userAgent("Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:25.0) Gecko/20100101 Firefox/25.0").get();

您进行上述更改的代码适用于我。

【讨论】:

  • @SheldonHughes 告诉我你得到的堆栈跟踪。
  • 尝试删除 Validate 语句,看看你会得到什么。显示完整的堆栈跟踪。剪切并粘贴所有内容。
  • 线程“main”中的异常 java.lang.IllegalArgumentException: news.ycombinator.com at org.jsoup.helper.Validate.isTrue(Validate.java:45) at jsoup.examples.ListLinks.main(ListLinks .java:21)
  • 程序的参数应该是:'http : // news.ycombinator.com/' 没有引号和空格。
  • 对不起。这就是你想要的,我想。线程“main”中的异常 java.lang.ArrayIndexOutOfBoundsException: 0 at jsoup.examples.ListLinks.main(ListLinks.java:22)
猜你喜欢
  • 2013-07-22
  • 1970-01-01
  • 2018-03-25
  • 2016-12-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多