2016-04-24 98 views
1

我有以下方法:的Java Jsoup錯誤處理

public Article buildArticle(SNSpecific specific, String urlToScrape) throws IOException { 


     Document page = Jsoup.connect(urlToScrape).timeout(10*1000).get(); 

     Article a = new Article(); 
     a.setWebsite("http://www.svensktnaringsliv.se/"); 
     a.setUrl(urlToScrape); 
     a.setTitle(page.select(specific.getTitleSelector()).text()); 
     a.setDiscoveryTime(page.select(specific.getDateAndTimeSelector()).text()); 

     if(isPdfPage(urlToScrape)) 
     { 
      Elements e = page.select("div.indepth-content > div.content > ul.indepth-list a"); 

      a.setText(page.select("div.readmoreSummary").text() + "For full article: " + 
        e.first().attr("href")); 
     }else { 
      a.setText(page.select(specific.getContentSelector()).text()); 
     } 
     return a; 
    } 

的問題是,有時它不能連接到urlToScrape即使我改變了超時,而我不想太長時間等待一個頁面,這就是爲什麼我正在尋找除timeout()方法之外的替代解決方案,可以採用另一種方法來解決這個問題?(我有大約200頁的內容)。

回答

1

什麼可能是另一種方法來處理這個問題?(我有大約200頁刮)。

我可以看到兩個選項:

  • 給服務器的兩個請求之間休息。
    兩次存取之間,使2000毫秒和5000毫秒

  • 使用代理
    之間的隨機暫停如果你不想兩次存取

+0

我已經使用之間做出暫停第一個選項,它完美的作品! :) – imoteb

+0

@imoteb它不反映在我的答案中,但可以在2000毫秒和5000毫秒之間進行隨機暫停。 – Stephan

+1

實際上,我提出了一些延遲,如果它再次拋出一些異常,我將鏈接放入隊列中以便稍後再試 – imoteb