0

私はもともとこの質問をしていました:

Java で適切なサイトを取得できない (Web サイト検索クエリの 2 番目の単語が途切れる)

基本的に、たとえば「夏服」のように単語が 2 つある商品を Web サイトで検索すると、「夏」だけの検索にリダイレクトされます。その答えから、Sears が javascript を使用してリダイレクトし、Jsoup が JavaScript リダイレクトをサポートしていないことが原因であると思われるため、Jsoup を使用している間にその Web サイトを取得する方法があるかどうか疑問に思っていました。

4

1 に答える 1

3

以下のコードは、メタ属性「REFRESH」と 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...
于 2013-11-23T10:16:19.030 に答える