2015-11-12 32 views
0

我在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無限的「a」,但只有一個數字包含我需要的信息(範圍從0-30)。沒有404回報。問題是遊標不會移動到下一個「a」,它會卡在a = 0處。必須有一些方法讓光標移動,因爲循環不會移動它。如何在Java Jsoup while循環中移動遊標?

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) { 
} 
+3

你能解釋一下你想要創造什麼網址?目前,您的代碼將創建「www.google.com0」網址直至「www.google.com29」。 – SubOptimal

+0

我已更新URL信息。是的,我想創建網址,例如:www.example.com/0,www.example.com/1,www.example.com/2,www.example.com/3,www.example.com/4 .. .www.example.com/30。其中一個網址有我要查找的數據。但代碼只是創建www.example.com/0和光標卡住,我希望它向前移動檢查其餘1-30 –

回答

0

我不知道你想在這裏實現什麼,但我會告訴你爲什麼環路是停留在0

這是因爲你試圖用Jsoup訪問URL (例如www.google.com0)不是有效的網址,它將返回一個404響應,Jsoup會將其視爲http exception,因此循環停止並且控制轉到catch塊以捕獲異常。

如果你真的想要去從0到29,下面的代碼會爲你工作:


UPDATE:

我現在看到的問題。你的代碼改成這樣:

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) { 
} 
+0

對不起,我已更新有關URL的信息。這裏沒有錯誤,沒有404網址無效。它運行,但光標停留在a = 0,我不知道如何使它向前移動。謝謝! –

+0

如果「信息」不爲空,看起來好像你在停止循環。對? –

+0

當信息未找到時,您是否希望循環停止?它在= 0時停止,因爲沒有找到信息(信息爲空)。這似乎是一個預期的輸出。 –