如何在循环中移动Java Jsoup中的Cursor?

时间:2015-11-12 06:55:43

标签: java jsoup

我使用带有while循环的Jsoup,但是光标停留在a = 0。我试图通过添加doc.next();来移动它但不起作用。我希望在网址中从0到29运行。谢谢! 编辑:网址结构为www.example.com/0,www.example.com/1,www.examplecom/2,www.example.com/3,www.example.com/4.....to unlimited " a",但只有一个数字包含我需要的信息(范围从0到30)。没有404回归。问题是光标没有移动到下一个" a"它停留在a = 0。必须有一些方法才能使光标移动,因为循环不会移动光标。

try {
    int a = 0;
    boolean condition = true;
    while (a < 30 && condition) {

        doc = Jsoup.connect("http://www.example.com/" + a).get();

        Elements info = doc.select("td[valign=top]");
        if (null != info) {
            System.out.println(info);
            condition = false;
            System.out.println(a);
        } else {
            a = a + 1;
        }
    }
} catch (Exception e) {
}

1 个答案:

答案 0 :(得分:0)

我不确定你到底想要达到的目的,但我会告诉你为什么循环停留在0。

这是因为您尝试使用Jsoup访问的网址(例如www.google.com0)不是有效的网址,并且会返回404响应,其中包含Jsoup将视为http exception,因此循环停止,控件转到catch块以捕获异常。

如果你真的想从0到29,下面的代码将适合你:

<强>更新

我现在看到了问题。将您的代码更改为:

try {
    int a = 0;
    boolean condition = true;
    while (a < 30 && condition) {

        try{
            doc = Jsoup.connect("http://www.google.com" + a).get();
        } catch(Exception jsoupE){
            continue;
        }

        Elements info = doc.select("td[valign=top]");
        if (info.first() != null) {
            System.out.println(info);
            condition = false;
            System.out.println(a);
        } else {
        a = a + 1;
        }
    }
} catch (Exception e) {
}