Jsoup没有获得最终重定向的URL

时间:2017-06-26 22:21:26

标签: java

目前,我正在尝试使用Jsoup来获取此网址的最终重定向网址:https://playoverwatch.com/en-us/search?q=Lolzword-1298。它应该重定向到此网址:https://playoverwatch.com/en-us/career/pc/us/Lolzword-1298,但下面的代码不会重定向网址。

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 个答案:

答案 0 :(得分:1)

JSoup' followRedirects用于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重定向,这会打印不同的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
...

如果我尝试使用您的网址,则没有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指向SeleniumHtmlUnit作为能够执行JavaScript并允许您获取最终网址的替代方案。