Jsoup返回不一致的结果

时间:2015-08-02 08:22:13

标签: java jsoup

我试图使用Jsoup来抓取以下网址:

http://translink.com.au//travel-information/service-notices/25611/details

我使用了以下查询#content-left-column > div.content,但结果不一致。

有时候我没有得到任何结果,有时我会得到所需的结果。

public class JsoupSelectorMain {
public static Elements getAlertsElements(Document document , String query)
{
    return document.select(query);
}

public static void main(String args[]) throws ParseException {
    Document doc = null;
    try {
        doc = Jsoup.connect("http://translink.com.au//travel-information/service-notices/25611/details").get();
    } catch (IOException e) {
        e.printStackTrace();
    }
    String str="#content-left-column > div.content";
    Elements element = getAlertsElements(doc, str);

    for(int i=0 ; i<element.size() ; i++){
        System.out.println(element.get(i).toString());
        System.out.println();
    }

    System.out.println("size=" + element.size());
}

}

我使用timeout(0)但不是问题。我还检查过Jsoup known issues,但无法找到类似的情况。

我在这里失踪了什么?

1 个答案:

答案 0 :(得分:0)

我认为这是因为该网站将其视为移动用户代理,并且可能是导致结果不一致的原因。我在eclipse上创建了一个新项目,在调试模式下,我发现URL已更改为http://mobile.translink.com.au//travel-information/service-notices/25611/details

以下是截图: without assigning .userAgent

然后我改变了这句话:

doc = Jsoup.connect("http://translink.com.au//travel-information/service-notices/25611/details").timeout(0).get();

对此:

doc = Jsoup.connect("http://translink.com.au//travel-information/service-notices/25611/details").timeout(0).userAgent("Chrome").get();

...因此它可以将其检测为非移动/桌面UA。

添加用户代理后: enter image description here