我试图使用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,但无法找到类似的情况。
我在这里失踪了什么?
答案 0 :(得分:0)
我认为这是因为该网站将其视为移动用户代理,并且可能是导致结果不一致的原因。我在eclipse上创建了一个新项目,在调试模式下,我发现URL已更改为http://mobile.translink.com.au//travel-information/service-notices/25611/details
然后我改变了这句话:
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。