Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html 使用jsoup.connect(url.get()跟踪javascript重定向?_Html_Redirect_Jsoup - Fatal编程技术网

Html 使用jsoup.connect(url.get()跟踪javascript重定向?

Html 使用jsoup.connect(url.get()跟踪javascript重定向?,html,redirect,jsoup,Html,Redirect,Jsoup,我最初有一个问题: 基本上,当我在一个网站上搜索一个有两个词的项目时,例如“夏季服装”,我会被重定向到一个只有“夏季”的搜索。根据这个答案,我怀疑这是因为Sears使用javascript重定向,而Jsoup不支持javascript重定向,所以我想知道是否有任何方法可以在仍然使用Jsoup的情况下获取该网站。下面的代码同时检查元属性“刷新”和javascript重定向。。。如果其中任何一个存在,则设置RedirectedUrl变量。所以你知道你的目标 String Redirecte

我最初有一个问题:


基本上,当我在一个网站上搜索一个有两个词的项目时,例如“夏季服装”,我会被重定向到一个只有“夏季”的搜索。根据这个答案,我怀疑这是因为Sears使用javascript重定向,而Jsoup不支持javascript重定向,所以我想知道是否有任何方法可以在仍然使用Jsoup的情况下获取该网站。

下面的代码同时检查元属性“刷新”和javascript重定向。。。如果其中任何一个存在,则设置
RedirectedUrl
变量。所以你知道你的目标

    String RedirectedUrl=null;
    Elements meta = page.select("html head meta");
    if (meta.attr("http-equiv").contains("REFRESH")) {
        RedirectedUrl = meta.attr("content").split("=")[1];
    } else {
        if (page.toString().contains("window.location.href")) {
            meta = page.select("script");
            for (Element script:meta) {
                String s = script.data();
                if (!s.isEmpty() && s.startsWith("window.location.href")) {
                    int start = s.indexOf("=");
                    int end = s.indexOf(";");
                    if (start>0 && end >start) {
                        s = s.substring(start+1,end);
                        s =s.replace("'", "").replace("\"", "");        
                        RedirectedUrl = s.trim();
                        break;
                    }
                }
            }
        }
    }

... now retrieve the redirected page again...

下面的代码检查元属性“刷新”和javascript重定向。。。如果其中任何一个存在,则设置
RedirectedUrl
变量。所以你知道你的目标

    String RedirectedUrl=null;
    Elements meta = page.select("html head meta");
    if (meta.attr("http-equiv").contains("REFRESH")) {
        RedirectedUrl = meta.attr("content").split("=")[1];
    } else {
        if (page.toString().contains("window.location.href")) {
            meta = page.select("script");
            for (Element script:meta) {
                String s = script.data();
                if (!s.isEmpty() && s.startsWith("window.location.href")) {
                    int start = s.indexOf("=");
                    int end = s.indexOf(";");
                    if (start>0 && end >start) {
                        s = s.substring(start+1,end);
                        s =s.replace("'", "").replace("\"", "");        
                        RedirectedUrl = s.trim();
                        break;
                    }
                }
            }
        }
    }

... now retrieve the redirected page again...