2017-06-26 5 views
0

現在、私はJsoupを使用してこのURLの最終的なリダイレクトURLを取得しようとしています。https://playoverwatch.com/en-us/search?q=Lolzword-1298 URL:https://playoverwatch.com/en-us/career/pc/us/Lolzword-1298にリダイレクトする必要がありますが、下のコードはURLをリダイレクトしません。Jsoupが最終的なリダイレクトURLを取得しない

String url = "https://playoverwatch.com/en-us/search?q=Lolzword-1298"; 
org.jsoup.Connection.Response response = Jsoup.connect(url).followRedirects(true).execute(); 
System.out.println(response.url()); 

答えて

1

JSoupのfollowRedirectsは、HTTPリダイレクト(「サーバーリダイレクト」)用であり、試行しているURLにそのようなものはありません。私はあなたのURLを持つことをしようとした場合

% curl -I 'https://stackoverflow.com/q/44769507' 
HTTP/1.1 302 Found 
Content-Type: text/html; charset=utf-8 
Location: https://stackoverflow.com/questions/44769507/jsoup-not-obtaining-final-redirected-url 
... 

ご自身の質問へのショートカットURLを持つ例:これが原因で、HTTPリダイレクトの異なるURLを出力します

String url = "https://stackoverflow.com/q/44769507"; 
Connection.Response response = Jsoup.connect(url).followRedirects(true).execute(); 
System.out.println(response.url()); 
// https://stackoverflow.com/questions/44769507/jsoup-not-obtaining-final-redirected-url 

は、ヘッダを参照してくださいHTTPリダイレクトはありません。

% curl -I 'https://playoverwatch.com/en-us/search?q=Lolzword-1298' 
HTTP/1.1 200 OK 
Cache-Control: public;max-age=300 
Content-Length: 104248 
Content-Type: text/html; charset=utf-8 
... 

「リダイレクト」は、 JavaScriptを使用してページをロードするとかなり後になります(そのページでJavaScriptを無効にしても、そのページは元の位置にとどまります)、JSoupがそれをキャッチできるとは思いません。

This answerは、JavaScriptを実行して最終的なURLを取得できる代替手段としてSeleniumまたはHtmlUnitを指します。

関連する問題