2017-07-11 12 views
0

Jsoupを使用しています。 URLはブラウザでうまく動作します。しかし、サーバー上で間違った結果を取得します。私はmaxBodySizeも "0"に設定しました。しかしそれはまだ最初の数タグを取得します。さらに、データはブラウザとはまったく異なります。あなたは私に手を差し伸べることができますか?Jsoupが間違った結果を取得します。

String queryUrl = "http://www.juso.go.kr/addrlink/addrLinkApi.do?confmKey=U01TX0FVVEgyMDE3MDYyODE0MTYyMzIyMTcw&currentPage=1&countPerPage=20&keyword=연남동"; 

Document document = Jsoup.connect(queryUrl).maxBodySize(0).get(); 
+0

いいえ、それはありません。サイトにログインする必要はありません。認証はすでに取得済みの確認キーだけです。ありがとう –

+0

ブラウザのすべてのクッキーとキャッシュをクリアしてもう一度試してみましたか?ブラウザをできるだけサーバーの状態に近づけてください。 –

+0

私は問題がブラウザと関係があるとは思わない。 –

答えて

1

このエンドポイントでページ番号が付けられたデータが返されることは承知していますか?あなたのURLは、最初のページから20のエントリを求めます。これらのエントリの順序は指定されていないと仮定して、このエンドポイントを呼び出すたびに異なるデータを取得できるようにします。特定のソート順を決定できるURLパラメータがあるかどうかを確認します。

とにかくすべての2037項目を読むには、順番にそれを行う必要があります。

final String baseUrl = "http://www.juso.go.kr/addrlink/addrLinkApi.do"; 
final String key = "U01TX0FVVEgyMDE3MDYyODE0MTYyMzIyMTcw"; 
final String keyword = "연남동"; 
final int perPage = 100; 
int currentPage = 1; 

while (true) { 
    System.out.println("Downloading data from page " + currentPage); 
    final String url = String.format("%s?confmKey=%s&currentPage=%d&countPerPage=%d&keyword=%s", baseUrl, key, currentPage, perPage, keyword); 

    final Document document = Jsoup.connect(url).maxBodySize(0).get(); 

    final Elements jusos = document.getElementsByTag("juso"); 
    System.out.println("Found " + jusos.size() + " juso entries"); 

    if (jusos.size() == 0) { 
    break; 
    } 

    currentPage += 1; 
} 

私たちは、1ページにつき100個のエントリ(つまり、このエンドポイントがサポートする最大数です)、我々は、特定のページを要求している限り、21回それを呼び出す任意の<juso>要素を返すために求めている。この場合:次のコードを調べ。あなたの問題解決に役立つことを願っています。

関連する問題