Jsoup在指定的网站上无法正常工作

时间:2015-12-12 17:36:52

标签: jsoup

这是一个中文网站。(Link

我想用Jsoup来解析这个网站,但似乎Jsoup无法正常工作。

一个非常简单的代码:

Document doc = Jsoup.connect("http://pchome.megatime.com.tw/stock/sid1101.html")
            .timeout(0).get();
Elements links = doc.select("a");

for(Element e : links) {
    System.out.println(e.text());
}

什么也没出来。

我的Jsoup可以解析除此之外的每个网站。任何人都可以帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:2)

网站正在做一件有趣的事情,首先它返回一个重定向(http代码302),然后返回一个小页面,该页面使用is_check=1参数执行表单提交。我们必须遵循所有这些步骤。

此外,您需要指定用户代理。

总结一下,就这样做:

Response res = Jsoup.connect("http://pchome.megatime.com.tw/stock/sid1101.html")
        .followRedirects(false)
        .timeout(0)
        .method(Method.GET)
        .header("User-Agent", "Mozilla/5.0")
        .execute();

String location = res.header("Location");

res = Jsoup.connect("http://pchome.megatime.com.tw/stock/sid1101.html")
        .timeout(0)
        .data("is_check", "1")
        .method(Method.POST)
        .header("User-Agent", "Mozilla/5.0")
        .header("Referer", location)
        .execute();

Document doc = res.parse();
Elements links = doc.select("a");

for(Element e : links) {
    System.out.println(e.text());
}

你会得到很多链接。