如何在Jsoup中重定向URL?

时间:2016-09-25 13:28:30

标签: jsoup

我有这段代码:

int pageNum = 1;
        List<String> urlLink = new ArrayList<String>();
        Document doc = Jsoup.connect("http://secret-site?pagenum=" + pageNum).followRedirects(true).userAgent("Chrome/51.0.2704.103").timeout(0)
                .get();
        Elements links = doc.select("td[align] .midtext > a");
        for(Element e : links) {
            if (e.attr("href").contains("title_about")) {
                urlLink.add(e.attr("href"));
                }
                if(urlLink.size()%100==0) {
                    pageNum++;
                    // how to redirect doc?
                }
                if (pageNum==3) {
                    break;
                }
            }

如何使这种状态处于pagenum递增页面更新的状态?

抱歉我的英语。

1 个答案:

答案 0 :(得分:0)

更改网址中的pagenum值时,您正在更改请求的GET参数,因此您必须再次调用Jsoup.connect(...).get()来请求新请求的结果页面。 您可以更改url-string(“http://secret-site?pagenum=2”),但我发现使用.data("key","value")方法更具可读性。 使用循环来环绕代码以增加pagenum值,然后就完成了。

示例代码

String userAgent = "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.116 Safari/537.36";
int numberOfResultpages = 3;
String url = "http://secret-site";

List<String> urlLink = new ArrayList<String>();

Document doc;

for (int i = 1; i < numberOfResultpages; i++) {

    try {
        doc = Jsoup.connect(url).userAgent(userAgent)
                .data("pagenum", "" + i)
                .method(Method.GET).get();

        for (Element e : doc.select("td[align] .midtext > a")) {

            if (!e.attr("href").contains("title_about"))
                continue;

            urlLink.add(e.attr("href"));

            if(urlLink.size()%100==0) {
                break;
            }
        }

    } catch (IOException e) {
        e.printStackTrace();
    }
}