我使用带有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) {
}
答案 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) {
}