2016-09-25 18 views
2

私はこのコードを持っている:JsoupでURLをリダイレクトする方法は?

int pageNum = 1; 
     List<String> urlLink = new ArrayList<String>(); 
     Document doc = Jsoup.connect("http://secret-site?pagenum=" + pageNum).followRedirects(true).userAgent("Chrome/51.0.2704.103").timeout(0) 
       .get(); 
     Elements links = doc.select("td[align] .midtext > a"); 
     for(Element e : links) { 
      if (e.attr("href").contains("title_about")) { 
       urlLink.add(e.attr("href")); 
       } 
       if(urlLink.size()%100==0) { 
        pageNum++; 
        // how to redirect doc? 
       } 
       if (pageNum==3) { 
        break; 
       } 
      } 

ことがPAGENUMインクリメントページが更新された状態になるようにする方法?

私の英語は申し訳ありません。

+0

リダイレクトこれに 'doc'?あなたのプログラムを 'Document doc = Jsoup.connect ....'にリダイレクトしようとしていますか? –

+0

はい、私はhttp:// secret-site?pagenum = 1を持っています.jsoupがhttp:// secret-siteに行く必要があるすべてのリンクを掻き集めるときは?pagenum = 2 –

+0

したがって、基本的に 'urlLink.size ()%100 == 0'は、最初からprogrammを実行したいですか? –

答えて

0

urlのpagenum値を変更すると、要求のGETパラメータが変更されるため、新しい要求の結果ページを再度要求する必要があります。Jsoup.connect(...).get()を再度呼び出してください。 URL文字列( "http://secret-site?pagenum=2")を変更することができますが、.data("key","value")メソッドを使用して読みやすくしています。 pagenumの値を増やすためにループを使用してコードを囲むと、完了です。

例コード

String userAgent = "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.116 Safari/537.36"; 
int numberOfResultpages = 3; 
String url = "http://secret-site"; 

List<String> urlLink = new ArrayList<String>(); 

Document doc; 

for (int i = 1; i < numberOfResultpages; i++) { 

    try { 
     doc = Jsoup.connect(url).userAgent(userAgent) 
       .data("pagenum", "" + i) 
       .method(Method.GET).get(); 

     for (Element e : doc.select("td[align] .midtext > a")) { 

      if (!e.attr("href").contains("title_about")) 
       continue; 

      urlLink.add(e.attr("href")); 

      if(urlLink.size()%100==0) { 
       break; 
      } 
     } 

    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
} 
+0

どうもありがとうございます! –

関連する問題